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

Version Description

Rainmaker compatibility

Download this release

Release Info

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

Code changes from version 1.9.19 to 1.9.20

Files changed (116) hide show
  1. assets/js/icegram.min.js +1 -1
  2. assets/js/main.min.js +1 -1
  3. classes/compat/class-icegram-compat-icegram-rainmaker.php +0 -73
  4. icegram.php +35 -4
  5. readme.txt +7 -1
  6. trunk/about-icegram.php +301 -0
  7. trunk/addons.php +104 -0
  8. trunk/assets/css/admin.min.css +9 -0
  9. trunk/assets/css/frontend.min.css +1 -0
  10. trunk/assets/images/animated-overlay.gif +0 -0
  11. trunk/assets/images/arrows-sprite.png +0 -0
  12. trunk/assets/images/chosen-sprite.png +0 -0
  13. trunk/assets/images/clear-footer.png +0 -0
  14. trunk/assets/images/clear-header.png +0 -0
  15. trunk/assets/images/clear-option.png +0 -0
  16. trunk/assets/images/desktop.png +0 -0
  17. trunk/assets/images/from_layouts.png +0 -0
  18. trunk/assets/images/icegram-logo-branding-18-white.png +0 -0
  19. trunk/assets/images/icegram-logo-branding-64-grey.png +0 -0
  20. trunk/assets/images/icegram-logo-branding-64-white.png +0 -0
  21. trunk/assets/images/icegram-logo-branding-64.png +0 -0
  22. trunk/assets/images/popup-amaze-bg.jpg +0 -0
  23. trunk/assets/images/popup-close.png +0 -0
  24. trunk/assets/images/sketch-action-bar.png +0 -0
  25. trunk/assets/images/sketch-messenger.png +0 -0
  26. trunk/assets/images/sketch-multiple-sequence.png +0 -0
  27. trunk/assets/images/sketch-popup.png +0 -0
  28. trunk/assets/images/sketch-rules.png +0 -0
  29. trunk/assets/images/sketch-toast-notification.png +0 -0
  30. trunk/assets/images/social-img.png +0 -0
  31. trunk/assets/images/sprite_1.png +0 -0
  32. trunk/assets/images/stand-out.png +0 -0
  33. trunk/assets/images/style_0.png +0 -0
  34. trunk/assets/images/style_1.png +0 -0
  35. trunk/assets/images/style_2.png +0 -0
  36. trunk/assets/images/style_3.png +0 -0
  37. trunk/assets/images/style_4.png +0 -0
  38. trunk/assets/images/talk-close.png +0 -0
  39. trunk/assets/images/talk-footer-1.png +0 -0
  40. trunk/assets/images/talk-header-1.png +0 -0
  41. trunk/assets/images/talk-header-2.png +0 -0
  42. trunk/assets/images/toast-glow.png +0 -0
  43. trunk/assets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  44. trunk/assets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  45. trunk/assets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  46. trunk/assets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  47. trunk/assets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  48. trunk/assets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  49. trunk/assets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  50. trunk/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  51. trunk/assets/images/ui-icons_222222_256x240.png +0 -0
  52. trunk/assets/images/ui-icons_2e83ff_256x240.png +0 -0
  53. trunk/assets/images/ui-icons_454545_256x240.png +0 -0
  54. trunk/assets/images/ui-icons_888888_256x240.png +0 -0
  55. trunk/assets/images/ui-icons_cd0a0a_256x240.png +0 -0
  56. trunk/assets/js/admin.min.js +22 -0
  57. trunk/assets/js/gallery.min.js +1 -0
  58. trunk/assets/js/icegram.min.js +1 -0
  59. trunk/assets/js/main.min.js +1 -0
  60. trunk/classes/class-icegram-cache.php +106 -0
  61. trunk/classes/class-icegram-campaign-admin.php +684 -0
  62. trunk/classes/class-icegram-campaign.php +178 -0
  63. trunk/classes/class-icegram-compat.php +24 -0
  64. trunk/classes/class-icegram-message-admin.php +763 -0
  65. trunk/classes/class-icegram-message-type.php +110 -0
  66. trunk/classes/class-icegram-message.php +23 -0
  67. trunk/classes/compat/class-icegram-compat-contact-form-7.php +99 -0
  68. trunk/classes/compat/class-icegram-compat-gravityforms.php +48 -0
  69. trunk/classes/ig-mobile-detect.php +1430 -0
  70. trunk/gallery.php +85 -0
  71. trunk/icegram.php +1721 -0
  72. trunk/lang/icegram-de_DE.mo +0 -0
  73. trunk/lang/icegram-de_DE.po +1125 -0
  74. trunk/lang/icegram-it_IT.mo +0 -0
  75. trunk/lang/icegram-it_IT.po +1134 -0
  76. trunk/lang/src/icegram.pot +801 -0
  77. trunk/message-types/action-bar/default.css +1 -0
  78. trunk/message-types/action-bar/main.js +1 -0
  79. trunk/message-types/action-bar/main.php +37 -0
  80. trunk/message-types/action-bar/themes/action-bar.min.css +1 -0
  81. trunk/message-types/action-bar/themes/air-mail.png +0 -0
  82. trunk/message-types/action-bar/themes/bold.png +0 -0
  83. trunk/message-types/action-bar/themes/hello.png +0 -0
  84. trunk/message-types/action-bar/themes/solid.png +0 -0
  85. trunk/message-types/messenger/default.css +1 -0
  86. trunk/message-types/messenger/main.js +1 -0
  87. trunk/message-types/messenger/main.php +38 -0
  88. trunk/message-types/messenger/themes/canvas.png +0 -0
  89. trunk/message-types/messenger/themes/clear.png +0 -0
  90. trunk/message-types/messenger/themes/messenger.min.css +1 -0
  91. trunk/message-types/messenger/themes/social.png +0 -0
  92. trunk/message-types/messenger/themes/talk.png +0 -0
  93. trunk/message-types/popup/default.css +1 -0
  94. trunk/message-types/popup/main.js +1 -0
  95. trunk/message-types/popup/main.php +54 -0
  96. trunk/message-types/popup/themes/air-mail.png +0 -0
  97. trunk/message-types/popup/themes/amaze.png +0 -0
  98. trunk/message-types/popup/themes/compel.png +0 -0
  99. trunk/message-types/popup/themes/convert.png +0 -0
  100. trunk/message-types/popup/themes/inspire.png +0 -0
  101. trunk/message-types/popup/themes/persuade.png +0 -0
  102. trunk/message-types/popup/themes/popup.min.css +1 -0
  103. trunk/message-types/toast/default.css +1 -0
  104. trunk/message-types/toast/main.js +1 -0
  105. trunk/message-types/toast/main.php +36 -0
  106. trunk/message-types/toast/themes/announce.png +0 -0
  107. trunk/message-types/toast/themes/balance.png +0 -0
  108. trunk/message-types/toast/themes/burnt.png +0 -0
  109. trunk/message-types/toast/themes/clear.png +0 -0
  110. trunk/message-types/toast/themes/night-glow.png +0 -0
  111. trunk/message-types/toast/themes/stand-out.png +0 -0
  112. trunk/message-types/toast/themes/toast.min.css +1 -0
  113. trunk/readme.txt +554 -0
  114. trunk/settings.php +44 -0
  115. trunk/updates/icegram-update-1.2.php +70 -0
  116. trunk/wpml-config.xml +6 -0
assets/js/icegram.min.js CHANGED
@@ -1 +1 @@
1
- function Icegram(){}function Icegram_Message_Type(a){var a;this.root_container="#icegram_messages_container",this.data=a,this.type=a.type,this.data.delay_time=parseInt(this.data.delay_time),"string"!=typeof this.data.link||""==this.data.link||/^tel:/i.test(this.data.link)||/^https?:\/\//i.test(this.data.link)||(this.data.link="http://"+this.data.link),this.set_template(this.get_template_default()),this.init()}Icegram.prototype.init=function(a){if(void 0!=a){jQuery(window).trigger("preinit.icegram",[a]),this.data=a,this.defaults=jQuery.extend({},a.defaults),this.message_data=a.messages,this.messages,this.tracking_data=[],this.message_template_cache={},this.map_id_to_index={},this.map_type_to_index={},this.mode=void 0==window.ig_mode?"local":window.ig_mode,this.powered_by={link:"http://www.icegram.com/?utm_source=inapp&utm_campaign=poweredby&utm_medium="},this.powered_by.text=this.defaults.powered_by_text,this.powered_by.logo=this.defaults.powered_by_logo,jQuery("body").append('<div id="icegram_messages_container"></div>');this.messages=[];var b=this;this.message_data.length>0&&jQuery.each(this.message_data,function(a,c){try{if(-1==window.location.href.indexOf("campaign_preview_id")){if("yes"==c.retargeting&&1==jQuery.cookie("icegram_campaign_shown_"+c.campaign_id))return;if("yes"==c.retargeting_clicked&&1==jQuery.cookie("icegram_campaign_clicked_"+c.campaign_id))return}var d=null,e=c.type.split("-").join(" ").ucwords().split(" ").join("_");d="function"==typeof window["Icegram_Message_Type_"+e]?new window["Icegram_Message_Type_"+e](c):new Icegram_Message_Type(c),b.messages.push(d),b.map_id_to_index["_"+c.id]=a,b.map_type_to_index[c.type]=jQuery.isArray(b.map_type_to_index[c.type])?b.map_type_to_index[c.type]:new Array,b.map_type_to_index[c.type].push(a)}catch(f){}}),jQuery(window).unload(function(){"function"==typeof window.icegram.submit_tracking_data&&window.icegram.submit_tracking_data(!1)}),setInterval(function(){"function"==typeof window.icegram.submit_tracking_data&&window.icegram.submit_tracking_data(!0)},5e3),jQuery(window).trigger("init.icegram",[this])}},Icegram.prototype.timer_tick=function(){},Icegram.prototype.get_template_fn=function(a){return this.message_template_cache[a]},Icegram.prototype.set_template_fn=function(a,b){this.message_template_cache[a]=b},Icegram.prototype.get_message=function(a){return this.messages.length>a?this.messages[a]:void 0},Icegram.prototype.get_message_by_id=function(a){if(this.map_id_to_index.hasOwnProperty("_"+a)){var b=this.map_id_to_index["_"+a];return this.get_message(b)}},Icegram.prototype.get_message_by_campaign_id=function(a){a=String(a);var b=[],c=this.messages;return a.indexOf(" ")&&(a=a.split(" ")),jQuery.each(a,function(a,d){jQuery.each(c,function(a,c){d==c.data.campaign_id&&b.push(c)})}),b},Icegram.prototype.get_messages_by_type=function(a){if(this.map_type_to_index.hasOwnProperty(a)){var b=this.map_type_to_index[a],c=[];if(jQuery.isArray(b)){var d=this;jQuery.each(b,function(a,b){c.push(d.get_message(b))})}return c}},Icegram.prototype.get_powered_by=function(a){var b=jQuery.extend({},this.powered_by);return b.link=b.link+(a||""),b},Icegram.prototype.track=function(a,b){"object"==typeof b&&b.hasOwnProperty("message_id")&&b.hasOwnProperty("campaign_id")&&(jQuery(window).trigger("track.icegram",[a,b]),this.tracking_data.push({type:a,params:b}))},Icegram.prototype.submit_tracking_data=function(a){var b=window.location.protocol.split(":"),c=b[0],d=this.data.ajax_url.split("://"),e=d[0];if(this.tracking_data.length>0&&-1==window.location.href.indexOf("campaign_preview_id")&&!this.is_bot()){var f={type:"POST",url:this.data.ajax_url,async:a||!1,data:{action:"icegram_event_track",event_data:JSON.parse(JSON.stringify(this.tracking_data)),ig_remote_url:"remote"==this.mode?window.location.href:void 0},success:function(a,b,c){},error:function(a,b,c){}};"remote"==this.mode?(f.xhrFields={withCredentials:!0},f.crossDomain=!0,f.async=!0):c!=e&&(f.xhrFields={withCredentials:!0},jQuery.extend(f.data,{ig_local_url_cs:window.location.href})),jQuery.ajax(f),this.tracking_data=[]}},Icegram.prototype.is_bot=function(){var a=/bot|spider|crawl|sucker|ia_archiver|alexa|spade|slurp|webbug|ZyBorg|Feedfetcher-Google|Mediapartners-Google|aolserver|seamonkey|binlar|casper|comodo|feedfinder|jakarta|java|larbin|libwww|pycurl|linkwalker|steeler|nutch|turnit|zmeu/i;return!!a.test(navigator.userAgent)},Icegram.prototype.hide_all_messages=function(){this.messages.length>0&&jQuery.each(this.messages,function(a,b){b.hide()})},Icegram_Message_Type.prototype.init=function(){this.render(),this.add_event_handlers()},Icegram_Message_Type.prototype.add_event_handlers=function(){this.el.on("click",{self:this},this.on_click),jQuery(window).on("resize",{self:this},this.on_resize)},Icegram_Message_Type.prototype.animations={},Icegram_Message_Type.prototype.embed_form=function(){if(-1===jQuery.inArray(this.data.type,["toast","badge","ribbon","exit-redirect"])){var a=null,b=this.data.form_layout,c=this.data.form_has_label,d=this.data.form_style||"none",e=this.data.label||void 0;if(d=d.toLowerCase().replace(" ","_"),void 0!=this.data.use_form&&"yes"==this.data.use_form&&(a=this.data.form_html),this.el.find("form.ig_embed_form").length>0){var f=this.el.find("form.ig_embed_form");b="inline",-1===jQuery.inArray(this.data.type,["messenger","tab","sidebar","interstitial","sticky"])&&(f.hasClass("ig_left")?b="left":f.hasClass("ig_right")&&(b="right")),"inline"==b&&this.el.find("form.ig_embed_form").replaceWith('<div class="ig_form_container layout_inline"></div>'),c=f.find(".ig_form_el_group label").length>0?"yes":void 0,0==f.find(".ig_button").length&&0==f.find("button[type=submit]").length&&(e=e||"Submit",f.append('<input class="ig_button" type="submit" value="'+e+'">')),a=jQuery("<div/>").append(f).html()}if(null==a)this.el.find(".ig_form_container").remove();else{var g=window.icegram.formProcess(this,a);if(g){var h=void 0!=this.data.form_header&&""!=this.data.form_header?'<div class="ig_form_header">'+this.data.form_header+"</div>":"",i=void 0!=this.data.form_footer&&""!=this.data.form_footer?'<div class="ig_form_footer">'+this.data.form_footer+"</div>":"";this.el.find(".ig_form_container").append(h).append(g).append(i),this.data.rainmaker_form_code&&""!=this.data.rainmaker_form_code&&(this.data.cta&&this.data.show_response&&this.data.response_text&&(!this.data.response_text||""!=this.data.response_text)||(this.data.response_text=jQuery("<div/>").html(a).find(".rm_form_message").html()||""),this.el.find(".ig_form_container").addClass(jQuery("<div/>").html(a).find(".rm_form_container").data("type")).data("form-id",jQuery("<div/>").html(a).find(".rm_form_container").data("form-id")).addClass("rainmaker_form")),void 0==c?this.el.find(".ig_el_label").not("span.ig_el_label").remove():(this.el.find("input, textarea").removeAttr("placeholder"),this.el.find("select option.ig_el_placeholder").remove()),this.el.find(".ig_form_container .ig_button").length>0&&(this.el.find(".ig_button").not(".ig_form_container .ig_button").hide(),e=e||this.el.find(".ig_button").val()||"Submit",this.el.find(".ig_button").val(e)),this.el.addClass("ig_form_"+b);var j="";void 0!=this.data.form_bg_color&&""!=this.data.form_bg_color?(this.el.find(".ig_form_container").css("background-color",this.data.form_bg_color),j+=".ig_form_"+b+".ig_form_"+d+" .ig_form_container:before{ background-color:"+this.data.form_bg_color+"; border-color:"+this.data.form_bg_color+";}"):j+=".ig_form_"+b+".ig_form_"+d+" .ig_form_container:before{ display:none;}",void 0!=this.data.form_text_color&&""!=this.data.form_text_color&&this.el.find(".ig_form_container").css("color",this.data.form_text_color),this.el.addClass("ig_form_"+d).find(".ig_form_container").prepend('<style type="text/css">'+j+"</style>"),this.el.find(".ig_form_container.layout_"+b+" .ig_form_els").first().addClass("ig_form_els_first").end().last().addClass("ig_form_els_last")}}}},Icegram_Message_Type.prototype.render=function(){this.pre_render();var a=this.render_template();try{jQuery(this.root_container).append(a)}catch(b){}this.dom_id="icegram_message_"+this.data.id,this.el=jQuery("#"+this.dom_id),this.set_position();var c=window.icegram.get_powered_by(this.type);if(c.hasOwnProperty("link")&&c.hasOwnProperty("text")&&""!=c.text&&this.add_powered_by(c),void 0!=this.data.headline&&""!=this.data.headline||this.el.find(".ig_headline").hide(),void 0!=this.data.icon&&""!=this.data.icon||this.el.addClass("ig_no_icon").find(".ig_icon").remove(),void 0!=this.data.message&&""!=this.data.message||this.el.find(".ig_message").hide(),void 0!=this.data.label&&""!=this.data.label||this.el.find(".ig_button").hide(),this.embed_form(),void 0==this.data.use_theme_defaults||"yes"!=this.data.use_theme_defaults){if(void 0!=this.data.text_color&&""!=this.data.text_color&&(this.el.css("color",this.data.text_color),this.el.find(".ig_container").css("color",this.data.text_color)),void 0!=this.data.bg_color&&""!=this.data.bg_color&&(this.el.css("background-color",this.data.bg_color),this.el.find(".ig_container").css("background-color",this.data.bg_color)),void 0!=this.data.cta_bg_color&&""!=this.data.cta_bg_color){this.el.find('.ig_button, form input[type="submit"]').css("background-color",this.data.cta_bg_color);var d=window.icegram.hexToHsl(this.data.cta_bg_color);this.el.find('.ig_button, form input[type="submit"]').css("border-color","hsl("+d.h+","+(d.s-5)+"%,"+(d.l-8)+"%)")}void 0!=this.data.cta_text_color&&""!=this.data.cta_text_color&&this.el.find('.ig_button, form input[type="submit"]').css("color",this.data.cta_text_color)}this.data.use_custom_code&&this.data.custom_css&&this.el.prepend('<style id="ig_custom_css_'+this.data.id+'" type="text/css">'+this.data.custom_css.replace(/#ig_this_message/g,"#"+this.dom_id)+"</style>"),"string"==typeof this.data.link&&""!=this.data.link&&this.el.parent().find(".ig_cta, .ig_button").css("cursor","pointer"),this.post_render(),this.hide({},!0),this.set_up_show_trigger()},Icegram.prototype.formProcess=function(a,b){var c=jQuery("<div/>").html(b).find('input[name="fake_text"]').data("required_field",!0).end().find("input.rm_required_feild").data("required_field",!0).end().find(".gform_validation_container input").data("required_field",!0).end().find(".required_field").data("required_field",!0).end().find("input, label, select, textarea, button").not("br");if(c.length>0){var d=jQuery('<div class="ig_embed_form_container ig_clear_fix"></div>'),e=jQuery("<div/>").html(b).find("form").removeAttr("class").removeAttr("style").addClass("ig_clear_fix").empty(),f=".",g=0;jQuery.each(c,function(a,b){var c=jQuery(b),e=jQuery('<div class="ig_form_els"></div>');if(c.removeAttr("class").removeAttr("style"),(-1==c.attr("tabindex")||c.is('*[name*="[abs]"]')||c.data("required_field")||"_mc4wp_required_but_not_really"==c.attr("name"))&&(c.addClass("ig_form_required_field").removeData("required_field"),g--),"hidden"!=c.attr("type")&&c.prop("disabled")!==!0||(c.addClass("ig_form_hidden_field"),g--),c.is("label"))f=c.not("input, select, textarea, button, span, br").text().replace(/\s+/g," ")||".";else if((c.is("input")||c.is("button")||c.is("textarea")||c.is("select"))&&!c.is("input[type=radio]")){if(c.removeAttr("id"),c.is("button")){var h=c.not("br, span, div").text().trim()||"";c.remove(),c=jQuery('<input type="submit" value="'+h+'">')}!c.is("input[type=submit]")&&!c.is("input[type=button]")||c.is(".ig_form_hidden_field, .ig_form_required_field")||c.addClass("ig_button"),(c.is("input[type=text]")||c.is("input[type=email]"))&&c.attr("size",25),label_class="ig_el_label ig_button_label","."!=f&&(label_class="ig_el_label",c.is("select")?jQuery('<option class="ig_el_placeholder">'+f+"</option>").prependTo(c):c.attr("placeholder",f)),jQuery('<label class="'+label_class+'">'+f+"</label>").appendTo(e),f=".",e.append(c),d.append(e),g++}else c.is("input[type=radio]")&&(label_class="ig_el_label ig_button_label","."!=f&&(label_class="ig_el_label"),jQuery('<label><span class="'+label_class+'">'+f+"</span></label>").prepend(c).appendTo(e),f=".",e.addClass("ig_form_el_radio"),d.append(e),g++)});var h=["","ig_full","ig_half","ig_third","ig_quater"];return g=4>g?g:4,d.find(".ig_form_required_field").length<=0&&d.append('<div class="ig_form_els"><input class="ig_form_required_field" type="text" tabindex="-1" value="" /></div>'),d.addClass(h[g]).find(".ig_form_required_field").parent().removeClass("ig_form_els").css({position:"absolute",left:"-5000px"}).end().end().find(".ig_form_hidden_field").parent().removeClass("ig_form_els").css({display:"none"}),e.append(d),jQuery("<div/>").append(e).html()}return null},Icegram_Message_Type.prototype.render_template=function(){return"function"!=typeof window.icegram.get_template_fn(this.type)&&window.icegram.set_template_fn(this.type,new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+this.template.replace(/[\r\t\n]/g," ").split("{{").join(" ").replace(/((^|\}\})[^\t]*)'/g,"$1\r").replace(/\t=(.*?)\}\}/g,"',$1,'").split(" ").join("');").split("}}").join("p.push('").split("\r").join("\\'")+"');}return p.join('');")),window.icegram.get_template_fn(this.type)(this.data)},Icegram_Message_Type.prototype.pre_render=function(){},Icegram_Message_Type.prototype.post_render=function(){},Icegram_Message_Type.prototype.set_up_show_trigger=function(){if(isNaN(this.data.delay_time))this.show();else if(this.data.delay_time>=0){var a=this;this.timer=setTimeout(function(){a.show()},1e3*this.data.delay_time)}},Icegram_Message_Type.prototype.set_template=function(a){this.template=a},Icegram_Message_Type.prototype.get_template_default=function(){return'<div id="icegram_message_{{=id}}" class="icegram"><div class="ig_headline">{{=headline}}</div></div>'},Icegram_Message_Type.prototype.show=function(a,b){this.is_visible()||(this.animate("in"),this.pre_show(),this.el.show(a),this.el.addClass("ig_show").removeClass("ig_hide"),b!==!0&&this.track("shown"),this.post_show());var c=this;window.icegram.adjustFormContainerHeight(c)},Icegram_Message_Type.prototype.hide=function(a,b){if(this.is_visible()){var c=this;this.animate("out"),this.pre_hide(),setTimeout(function(){c.el.hasClass("ig_no_hide")||c.el.hide(a),c.el.addClass("ig_hide").removeClass("ig_show")},500),b!==!0&&this.track("closed"),this.post_hide()}},Icegram_Message_Type.prototype.set_position=function(){},Icegram_Message_Type.prototype.add_powered_by=function(a){},Icegram_Message_Type.prototype.pre_show=function(){},Icegram_Message_Type.prototype.post_show=function(){},Icegram_Message_Type.prototype.pre_hide=function(){},Icegram_Message_Type.prototype.post_hide=function(){},Icegram_Message_Type.prototype.track=function(a,b){"function"==typeof window.icegram.track&&(b=b||{},jQuery.extend(b,{message_id:this.data.id,campaign_id:this.data.campaign_id,expiry_time:this.data.expiry_time,expiry_time_clicked:this.data.expiry_time_clicked}),window.icegram.track(a,b))},Icegram_Message_Type.prototype.is_visible=function(){return this.el.hasClass("ig_show")},Icegram_Message_Type.prototype.toggle=function(a){this.is_visible()?this.hide(a):this.show(a)},Icegram_Message_Type.prototype.on_click=function(a){if(a.data=a.data||{self:this},jQuery(a.target).filter(".ig_close").length)return void a.data.self.hide();var b=jQuery(a.target).closest(".icegram").find("form:visible").first();(jQuery(a.target).filter(".ig_button, .ig_cta, :submit").length||jQuery(a.target).parents("button[type=submit]").length||jQuery(a.target).parents(".ig_button, .ig_cta").length&&!(b.find(".ig_button, input[type=button], input[type=submit], button[type=submit]").length>0))&&a.data.self.on_cta_click(a)},Icegram_Message_Type.prototype.on_resize=function(a){},Icegram_Message_Type.prototype.on_cta_click=function(a){a.data=a.data||{self:this};var b=jQuery(a.target).closest(".icegram").find("form:visible").first();return jQuery(b).length&&jQuery(b).find(".ig_form_required_field").length&&""!==jQuery(b).find(".ig_form_required_field").val()?(a.preventDefault(),void a.data.self.hide()):(a.data.self.track("clicked"),void(jQuery(b).length?jQuery(b).submit(function(a){jQuery(b).hasClass("ig_form_init_done")&&a.preventDefault()}):"string"==typeof a.data.self.data.link&&""!=a.data.self.data.link?(window.location.href=a.data.self.data.link,a.data.self.hide()):a.data.self.data.hide!==!1&&a.data.self.hide()))},Icegram_Message_Type.prototype.animate=function(a){if("undefined"!=typeof this.data.animation){var b=this.data.animation,c=this;"in"==a?"function"==typeof this.animations[b+"_in"]?this.animations[b+"_in"](c):this.el.hasClass("ig_anim_"+b+"_in")||(this.el.removeClass("ig_anim_"+b+"_out"),setTimeout(function(){c.el.addClass("ig_anim_"+b+"_in")},1)):"out"==a&&("function"==typeof this.animations[b+"_out"]?this.animations[b+"_out"](c):(this.el.removeClass("ig_anim_"+b+"_in"),setTimeout(function(){c.el.addClass("ig_anim_"+b+"_out")},1)))}},String.prototype.ucwords=function(){return this.toLowerCase().replace(/\b[a-z]/g,function(a){return a.toUpperCase()})},Icegram.prototype.adjustFormContainerHeight=function(a){var b="";if(a.el.hasClass("ig_form_left")||a.el.hasClass("ig_form_right")){b=a.el.hasClass("ig_form_left")?"left":"right";var c=a.el.find(".ig_data").outerHeight()>a.el.find(".ig_form_container.layout_"+b).outerHeight()?a.el.find(".ig_data").outerHeight():a.el.find(".ig_form_container.layout_"+b).outerHeight();a.el.find(".ig_form_container").outerHeight(c)}},Icegram.prototype.hexToRgb=function(a){var b=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return b?{r:parseInt(b[1],16),g:parseInt(b[2],16),b:parseInt(b[3],16)}:null},Icegram.prototype.rgbToHsl=function(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i;break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}h=Math.floor(100*h),e=Math.floor(100*e),d=Math.floor(60*d),0>d&&(d+=360)}return{h:d,s:e,l:h}},Icegram.prototype.hexToHsl=function(a){var b=window.icegram.hexToRgb(a);return window.icegram.rgbToHsl(b.r,b.g,b.b)},"function"!=typeof Object.create&&!function(){var a=function(){};Object.create=function(b){if(arguments.length>1)throw Error("Second argument not supported");if(null===b)throw Error("Cannot set a null [[Prototype]]");if("object"!=typeof b)throw TypeError("Argument must be an object");return a.prototype=b,new a}}(),void 0!==typeof jQuery.cookie&&!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});;function Icegram_Message_Type_Action_Bar(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Action_Bar.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Action_Bar.prototype.constructor=Icegram_Message_Type_Action_Bar,Icegram_Message_Type_Action_Bar.prototype.get_template_default=function(){return'<div class="icegram action_bar_{{=id}}" ><div class="ig_action_bar ig_container ig_{{=theme}} ig_no_hide" id="icegram_message_{{=id}}"><div class="ig_content ig_clear_fix"><div class="ig_close" id="ig_close_{{=id}}"><span></span></div><div class="ig_form_container layout_left"></div><div class="ig_data ig_clear_fix"><div class="ig_headline">{{=headline}}</div><div class="ig_message">{{=message}}</div></div><div class="ig_button">{{=label}}</div><div class="ig_form_container layout_right layout_bottom"></div></div></div></div>'},Icegram_Message_Type_Action_Bar.prototype.post_render=function(){void 0!=this.data.use_theme_defaults&&"yes"==this.data.use_theme_defaults||void 0!=this.data.bg_color&&""!=this.data.bg_color&&this.el.find(".ig_close").css("background-color",this.data.bg_color),"21"!==this.data.position&&0==jQuery("#ig_body_pushdown").length&&jQuery("body").prepend('<div id="ig_body_pushdown"></div>')},Icegram_Message_Type_Action_Bar.prototype.set_position=function(){switch(this.data.position){case"21":this.el.addClass("ig_bottom");break;case"01":default:this.el.addClass("ig_top")}},Icegram_Message_Type_Action_Bar.prototype.add_powered_by=function(a){this.el.addClass("ig_has_pwby").find(".ig_content").before('<div class="ig_powered_by" ><a href="'+a.link+'" target="_blank"><img src="'+a.logo+'" title="'+a.text+'"/></a></div>')},Icegram_Message_Type_Action_Bar.prototype.on_click=function(a){return a.data=a.data||{self:this},jQuery(a.target).filter(".ig_show .ig_close, .ig_show span").length?void a.data.self.hide():jQuery(a.target).filter(".ig_hide .ig_close, .ig_hide span").length?void a.data.self.show():void Icegram_Message_Type.prototype.on_click.apply(this,arguments)},Icegram_Message_Type_Action_Bar.prototype.post_show=function(){if("21"!==this.data.position){var a=this.el.outerHeight()||0;jQuery("#ig_body_pushdown").css("display","block").animate({height:a},500),jQuery("*",document.body).not(".ig_action_bar, .ig_popup, .ig_messenger, .ig_inline, .ig_overlay, .ig_sidebar, .ig_tab, .ig_interstitial ,#ig_body_pushdown ").each(function(){var b=window.getComputedStyle(this,null);("fixed"===b.position||"absolute"===b.position&&("BODY"===this.parentNode.nodeName||"HEADER"===this.nodeName))&&!isNaN(parseInt(b.top,10))&&this.getBoundingClientRect().top<=a&&jQuery(this).data("ig_fx_top",b.top).animate({top:parseInt(b.top,10)+a+"px"},300)})}},Icegram_Message_Type_Action_Bar.prototype.pre_hide=function(){"21"!==this.data.position&&(jQuery("#ig_body_pushdown").animate({height:0},300).css("display","none"),jQuery("*",document.body).not(".ig_action_bar, .ig_popup, .ig_messenger, .ig_inline, .ig_overlay, .ig_sidebar, .ig_tab, .ig_interstitial ,#ig_body_pushdown ").each(function(){"undefined"!=typeof jQuery(this).data("ig_fx_top")&&jQuery(this).animate({top:jQuery(this).data("ig_fx_top")},200)}))};;function Icegram_Message_Type_Messenger(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Messenger.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Messenger.prototype.constructor=Icegram_Message_Type_Messenger,Icegram_Message_Type_Messenger.prototype.get_template_default=function(){return'<div class="icegram ig_messenger ig_{{=theme}} ig_container ig_cta" id="icegram_message_{{=id}}"><div class="ig_content"><div class="ig_close" id="ig_close_{{=id}}"></div><div class="ig_data"><div class="ig_headline">{{=headline}}</div><div class="ig_body"><img class="ig_icon" src="{{=icon}}"/><div class="ig_message">{{=message}}</div></div><div class="ig_footer"></div></div></div></div>'},Icegram_Message_Type_Messenger.prototype.set_position=function(){switch(this.data.position){case"20":this.el.addClass("ig_left ig_bottom");break;case"22":default:this.el.addClass("ig_right ig_bottom")}},Icegram_Message_Type_Messenger.prototype.add_powered_by=function(a){this.el.addClass("ig_has_pwby").find(".ig_content").after('<div class="ig_powered_by"><a href="'+a.link+'" target="_blank">'+a.text+"</a></div>")};;function Icegram_Message_Type_Popup(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Popup.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Popup.prototype.constructor=Icegram_Message_Type_Popup,Icegram_Message_Type_Popup.prototype.get_template_default=function(){return'<div id="icegram_message_{{=id}}" class="icegram ig_popup ig_{{=theme}} ig_container mfp-hide"><div class="ig_close" id="popup_box_close_{{=id}}"></div><div class="ig_clear_fix" data={{=id}}><div class="ig_bg_overlay"></div><div class="ig_form_container layout_left"></div><div class="ig_data ig_clear_fix"><div class="ig_headline">{{=headline}}</div><div class="ig_content"><div class="ig_message ig_clear_fix">{{=message}}</div></div><div class="ig_button" >{{=label}}</div></div><div class="ig_form_container layout_right layout_bottom"></div></div></div>'},Icegram_Message_Type_Popup.prototype.post_render=function(){void 0!=this.data.use_theme_defaults&&"yes"==this.data.use_theme_defaults||void 0!=this.data.bg_color&&""!=this.data.bg_color&&this.el.find(".ig_bg_overlay").css("border-color",this.data.bg_color)},Icegram_Message_Type_Popup.prototype.show=function(a,b){if(!this.is_visible()){var c=this,d="#icegram_message_"+this.data.id;this.animate("in"),jQuery.magnificPopup.open({items:{src:d,type:"inline"},showCloseBtn:!1,callbacks:{close:function(){b!==!0&&c.track("closed"),c.el.removeClass("ig_show")},open:function(){window.icegram.adjustFormContainerHeight(c)}}}),c.el.addClass("ig_show").removeClass("ig_hide"),b!==!0&&this.track("shown")}},Icegram_Message_Type_Popup.prototype.add_powered_by=function(a){setTimeout(function(){jQuery(".mfp-wrap").append('<div class="ig_powered_by"><a href="'+a.link+'" target="_blank">'+a.text+"</a></div>")},1e3+1e3*this.data.delay_time)},Icegram_Message_Type_Popup.prototype.hide=function(a,b){if(this.is_visible()){var c="#icegram_message_"+this.data.id,d=this;this.animate("out"),setTimeout(function(){d.el.addClass("ig_hide").removeClass("ig_show"),jQuery.magnificPopup.close({items:{src:c,type:"inline"}})},500)}},"undefined"==typeof jQuery.magnificPopup&&!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isIE7=-1!==c.indexOf("MSIE 7."),b.isIE8=-1!==c.indexOf("MSIE 8."),b.isLowIE=b.isIE7||b.isIE8,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),b.st.showCloseBtn&&(!b.st.closeBtnInside||b.currTemplate[b.currItem.type]===!0)&&b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||2!==c.which&&!c.ctrlKey&&!c.metaKey){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),!d&&"loading"===a&&(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(a,c){if(void 0===c||c===!1)return!0;if(e=a.split("_"),e.length>1){var d=b.find(p+"-"+e[0]);if(d.length>0){var f=e[1];"replaceWith"===f?d[0]!==c[0]&&d.replaceWith(c):"img"===f?d.is("img")?d.attr("src",c):d.replaceWith('<img src="'+c+'" class="'+d.attr("class")+'" />'):d.attr(e[1],c)}}else b.find(p+"-"+a).html(c)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&times;</button>',tClose:"Close (Esc)",tLoading:"Loading..."}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,H&&clearInterval(H),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){H&&clearInterval(H),H=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(H),c++,3===c?e(10):40===c?e(50):100===c&&e(500),void 0)},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:I(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(H&&clearInterval(H),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var J,K=function(){return void 0===J&&(J=void 0!==document.createElement("p").style.MozTransform),J};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return K()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var L="retina";a.magnificPopup.registerModule(L,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+L,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+L,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});;function Icegram_Message_Type_Toast(a){this.width=300,this.sticky=!1,this.duration=1e4,Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Toast.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Toast.prototype.constructor=Icegram_Message_Type_Toast,Icegram_Message_Type_Toast.prototype.get_template_default=function(){return'<li class="icegram ig_toast ig_container ig_{{=theme}} ig_cta" data="{{=id}}" id="icegram_message_{{=id}}"><div class="ig_wrapper"><div class="ig_content"><div class="ig_base"></div><div class="ig_line"></div><img class="ig_icon" src="{{=icon}}"/><div class="ig_headline">{{=headline}}</div><div class="ig_message">{{=message}}</div></div></div></li>'},Icegram_Message_Type_Toast.prototype.pre_render=function(){if("10"!=this.data.position&&"12"!=this.data.position||(this.data.position="20"),jQuery("ul#"+this.data.position).length)var a=jQuery("ul#"+this.data.position);else{var a=jQuery('<ul id="'+this.data.position+'"></ul>').addClass("ig_toast_block").appendTo(this.root_container).hide();a.width(this.width),"00"==this.data.position?a.css({top:"0",left:"0"}).addClass("ig_left").addClass("ig_top"):"01"==this.data.position?a.css({top:"0",left:"50%",margin:"5px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_top"):"02"==this.data.position?a.css({top:"0",right:"0"}).addClass("ig_right").addClass("ig_top"):"20"==this.data.position?a.css({bottom:"0",left:"0"}).addClass("ig_left").addClass("ig_bottom"):"21"==this.data.position?a.css({bottom:"0",left:"50%",margin:"5px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_bottom"):"22"==this.data.position?a.css({bottom:"0",right:"0"}).addClass("ig_right").addClass("ig_bottom"):"11"==this.data.position&&a.css({top:"50%",left:"50%",margin:"-"+this.width/2+"px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_top")}this.root_container=a},Icegram_Message_Type_Toast.prototype.pre_show=function(){!this.root_container.hasClass("active")&&this.root_container.addClass("active").show()},Icegram_Message_Type_Toast.prototype.post_show=function(){var a=this;!this.sticky&&this.duration>0&&setTimeout(function(){a.hide(),a.root_container.children().length||a.root_container.removeClass("active").hide()},this.duration)};
1
+ function Icegram(){}function Icegram_Message_Type(a){var a;this.root_container="#icegram_messages_container",this.data=a,this.type=a.type,this.data.delay_time=parseInt(this.data.delay_time),"string"!=typeof this.data.link||""==this.data.link||/^tel:/i.test(this.data.link)||/^https?:\/\//i.test(this.data.link)||(this.data.link="http://"+this.data.link),this.set_template(this.get_template_default()),this.init()}Icegram.prototype.init=function(a){if(void 0!=a){jQuery(window).trigger("preinit.icegram",[a]),this.data=a,this.defaults=jQuery.extend({},a.defaults),this.message_data=a.messages,this.messages,this.tracking_data=[],this.message_template_cache={},this.map_id_to_index={},this.map_type_to_index={},this.mode=void 0==window.ig_mode?"local":window.ig_mode,this.powered_by={link:"http://www.icegram.com/?utm_source=inapp&utm_campaign=poweredby&utm_medium="},this.powered_by.text=this.defaults.powered_by_text,this.powered_by.logo=this.defaults.powered_by_logo,jQuery("body").append('<div id="icegram_messages_container"></div>');this.messages=[];var b=this;this.message_data.length>0&&jQuery.each(this.message_data,function(a,c){try{if(-1==window.location.href.indexOf("campaign_preview_id")){if("yes"==c.retargeting&&1==jQuery.cookie("icegram_campaign_shown_"+c.campaign_id))return;if("yes"==c.retargeting_clicked&&1==jQuery.cookie("icegram_campaign_clicked_"+c.campaign_id))return}var d=null,e=c.type.split("-").join(" ").ucwords().split(" ").join("_");d="function"==typeof window["Icegram_Message_Type_"+e]?new window["Icegram_Message_Type_"+e](c):new Icegram_Message_Type(c),b.messages.push(d),b.map_id_to_index["_"+c.id]=a,b.map_type_to_index[c.type]=jQuery.isArray(b.map_type_to_index[c.type])?b.map_type_to_index[c.type]:new Array,b.map_type_to_index[c.type].push(a)}catch(f){console.log(f)}}),jQuery(window).unload(function(){"function"==typeof window.icegram.submit_tracking_data&&window.icegram.submit_tracking_data(!1)}),setInterval(function(){"function"==typeof window.icegram.submit_tracking_data&&window.icegram.submit_tracking_data(!0)},5e3),jQuery(window).trigger("init.icegram",[this])}},Icegram.prototype.timer_tick=function(){},Icegram.prototype.get_template_fn=function(a){return this.message_template_cache[a]},Icegram.prototype.set_template_fn=function(a,b){this.message_template_cache[a]=b},Icegram.prototype.get_message=function(a){return this.messages.length>a?this.messages[a]:void 0},Icegram.prototype.get_message_by_id=function(a){if(this.map_id_to_index.hasOwnProperty("_"+a)){var b=this.map_id_to_index["_"+a];return this.get_message(b)}},Icegram.prototype.get_message_by_campaign_id=function(a){a=String(a);var b=[],c=this.messages;return a.indexOf(" ")&&(a=a.split(" ")),jQuery.each(a,function(a,d){jQuery.each(c,function(a,c){d==c.data.campaign_id&&b.push(c)})}),b},Icegram.prototype.get_messages_by_type=function(a){if(this.map_type_to_index.hasOwnProperty(a)){var b=this.map_type_to_index[a],c=[];if(jQuery.isArray(b)){var d=this;jQuery.each(b,function(a,b){c.push(d.get_message(b))})}return c}},Icegram.prototype.get_powered_by=function(a){var b=jQuery.extend({},this.powered_by);return b.link=b.link+(a||""),b},Icegram.prototype.track=function(a,b){"object"==typeof b&&b.hasOwnProperty("message_id")&&b.hasOwnProperty("campaign_id")&&(jQuery(window).trigger("track.icegram",[a,b]),this.tracking_data.push({type:a,params:b}))},Icegram.prototype.submit_tracking_data=function(a){var b=window.location.protocol.split(":"),c=b[0],d=this.data.ajax_url.split("://"),e=d[0];if(this.tracking_data.length>0&&-1==window.location.href.indexOf("campaign_preview_id")&&!this.is_bot()){var f={type:"POST",url:this.data.ajax_url,async:a||!1,data:{action:"icegram_event_track",event_data:JSON.parse(JSON.stringify(this.tracking_data)),ig_remote_url:"remote"==this.mode?window.location.href:void 0},success:function(a,b,c){},error:function(a,b,c){}};"remote"==this.mode?(f.xhrFields={withCredentials:!0},f.crossDomain=!0,f.async=!0):c!=e&&(f.xhrFields={withCredentials:!0},jQuery.extend(f.data,{ig_local_url_cs:window.location.href})),jQuery.ajax(f),this.tracking_data=[]}},Icegram.prototype.is_bot=function(){var a=/bot|spider|crawl|sucker|ia_archiver|alexa|spade|slurp|webbug|ZyBorg|Feedfetcher-Google|Mediapartners-Google|aolserver|seamonkey|binlar|casper|comodo|feedfinder|jakarta|java|larbin|libwww|pycurl|linkwalker|steeler|nutch|turnit|zmeu/i;return!!a.test(navigator.userAgent)},Icegram.prototype.hide_all_messages=function(){this.messages.length>0&&jQuery.each(this.messages,function(a,b){b.hide()})},Icegram_Message_Type.prototype.init=function(){this.render(),this.add_event_handlers()},Icegram_Message_Type.prototype.add_event_handlers=function(){this.el.on("click",{self:this},this.on_click),jQuery(window).on("resize",{self:this},this.on_resize)},Icegram_Message_Type.prototype.animations={},Icegram_Message_Type.prototype.embed_form=function(){if(-1===jQuery.inArray(this.data.type,["toast","badge","ribbon","exit-redirect"])){var a=null,b=this.data.form_layout,c=this.data.form_has_label,d=this.data.form_style||"none",e=this.data.label||void 0;if(d=d.toLowerCase().replace(" ","_"),void 0!=this.data.use_form&&"yes"==this.data.use_form&&(a=this.data.form_html),this.el.find("form.ig_embed_form").length>0){var f=this.el.find("form.ig_embed_form");b="inline",-1===jQuery.inArray(this.data.type,["messenger","tab","sidebar","interstitial","sticky"])&&(f.hasClass("ig_left")?b="left":f.hasClass("ig_right")&&(b="right")),"inline"==b&&this.el.find("form.ig_embed_form").replaceWith('<div class="ig_form_container layout_inline"></div>'),c=f.find(".ig_form_el_group label").length>0?"yes":void 0,0==f.find(".ig_button").length&&0==f.find("button[type=submit]").length&&(e=e||"Submit",f.append('<input class="ig_button" type="submit" value="'+e+'">')),a=jQuery("<div/>").append(f).html()}if(null==a)this.el.find(".ig_form_container").remove();else{var g=window.icegram.formProcess(this,a);if(g){var h=void 0!=this.data.form_header&&""!=this.data.form_header?'<div class="ig_form_header">'+this.data.form_header+"</div>":"",i=void 0!=this.data.form_footer&&""!=this.data.form_footer?'<div class="ig_form_footer">'+this.data.form_footer+"</div>":"";if(this.el.find(".ig_form_container").append(h).append(g).append(i),this.data.rainmaker_form_code&&""!=this.data.rainmaker_form_code){this.data.cta&&"form"!==this.data.cta&&this.data.show_response&&this.data.response_text&&(!this.data.response_text||""!=this.data.response_text)||(this.data.response_text=jQuery("<div/>").html(a).find(".rm_form_message").html()||""),this.el.find(".ig_form_container").addClass(jQuery("<div/>").html(a).find(".rm_form_container").data("type")).data("form-id",jQuery("<div/>").html(a).find(".rm_form_container").data("form-id")).addClass("rainmaker_form");var j=jQuery("<div/>").html(a).find("#rm_script"),k=jQuery("<div/>").html(a).find("#rm_style");this.el.find(".ig_form_container").prepend(k).append(j)}void 0==c?this.el.find(".ig_el_label").not("span.ig_el_label").remove():(this.el.find("input, textarea").removeAttr("placeholder"),this.el.find("select option.ig_el_placeholder").remove()),this.el.find(".ig_form_container .ig_button").length>0&&(this.el.find(".ig_button").not(".ig_form_container .ig_button").hide(),e=e||this.el.find(".ig_button").val()||"Submit",this.el.find(".ig_button").val(e)),this.el.addClass("ig_form_"+b);var l="";void 0!=this.data.form_bg_color&&""!=this.data.form_bg_color?(this.el.find(".ig_form_container").css("background-color",this.data.form_bg_color),l+=".ig_form_"+b+".ig_form_"+d+" .ig_form_container:before{ background-color:"+this.data.form_bg_color+"; border-color:"+this.data.form_bg_color+";}"):l+=".ig_form_"+b+".ig_form_"+d+" .ig_form_container:before{ display:none;}",void 0!=this.data.form_text_color&&""!=this.data.form_text_color&&this.el.find(".ig_form_container").css("color",this.data.form_text_color),this.el.addClass("ig_form_"+d).find(".ig_form_container").prepend('<style type="text/css">'+l+"</style>"),this.el.find(".ig_form_container.layout_"+b+" .ig_form_els").first().addClass("ig_form_els_first").end().last().addClass("ig_form_els_last")}}}},Icegram_Message_Type.prototype.render=function(){this.pre_render();var a=this.render_template();try{jQuery(this.root_container).append(a)}catch(b){}this.dom_id="icegram_message_"+this.data.id,this.el=jQuery("#"+this.dom_id),this.set_position();var c=window.icegram.get_powered_by(this.type);if(c.hasOwnProperty("link")&&c.hasOwnProperty("text")&&""!=c.text&&this.add_powered_by(c),void 0!=this.data.headline&&""!=this.data.headline||this.el.find(".ig_headline").hide(),void 0!=this.data.icon&&""!=this.data.icon||this.el.addClass("ig_no_icon").find(".ig_icon").remove(),void 0!=this.data.message&&""!=this.data.message||this.el.find(".ig_message").hide(),void 0!=this.data.label&&""!=this.data.label||this.el.find(".ig_button").hide(),this.embed_form(),void 0==this.data.use_theme_defaults||"yes"!=this.data.use_theme_defaults){if(void 0!=this.data.text_color&&""!=this.data.text_color&&(this.el.css("color",this.data.text_color),this.el.find(".ig_container").css("color",this.data.text_color)),void 0!=this.data.bg_color&&""!=this.data.bg_color&&(this.el.css("background-color",this.data.bg_color),this.el.find(".ig_container").css("background-color",this.data.bg_color)),void 0!=this.data.cta_bg_color&&""!=this.data.cta_bg_color){this.el.find('.ig_button, form input[type="submit"]').css("background-color",this.data.cta_bg_color);var d=window.icegram.hexToHsl(this.data.cta_bg_color);this.el.find('.ig_button, form input[type="submit"]').css("border-color","hsl("+d.h+","+(d.s-5)+"%,"+(d.l-8)+"%)")}void 0!=this.data.cta_text_color&&""!=this.data.cta_text_color&&this.el.find('.ig_button, form input[type="submit"]').css("color",this.data.cta_text_color)}this.data.use_custom_code&&this.data.custom_css&&this.el.prepend('<style id="ig_custom_css_'+this.data.id+'" type="text/css">'+this.data.custom_css.replace(/#ig_this_message/g,"#"+this.dom_id)+"</style>"),"string"==typeof this.data.link&&""!=this.data.link&&this.el.parent().find(".ig_cta, .ig_button").css("cursor","pointer"),this.post_render(),this.hide({},!0),this.set_up_show_trigger()},Icegram.prototype.formProcess=function(a,b){var c=jQuery("<div/>").html(b).find('input[name="fake_text"]').data("required_field",!0).end().find("input.rm_required_feild").data("required_field",!0).end().find(".gform_validation_container input").data("required_field",!0).end().find(".required_field").data("required_field",!0).end().find("input, label, select, textarea, button").not("br");if(c.length>0){var d=jQuery('<div class="ig_embed_form_container ig_clear_fix"></div>'),e=jQuery("<div/>").html(b).find("form").removeAttr("class").removeAttr("style").addClass("ig_clear_fix").empty(),f=".",g=0;jQuery.each(c,function(a,b){var c=jQuery(b),e=jQuery('<div class="ig_form_els"></div>');if(c.removeAttr("class").removeAttr("style"),(-1==c.attr("tabindex")||c.is('*[name*="[abs]"]')||c.data("required_field")||"_mc4wp_required_but_not_really"==c.attr("name"))&&(c.addClass("ig_form_required_field").removeData("required_field"),g--),"hidden"!=c.attr("type")&&c.prop("disabled")!==!0||(c.addClass("ig_form_hidden_field"),g--),c.is("label"))f=c.not("input, select, textarea, button, span, br").text().replace(/\s+/g," ")||".";else if((c.is("input")||c.is("button")||c.is("textarea")||c.is("select"))&&!c.is("input[type=radio]")){if(c.removeAttr("id"),c.is("button")){var h=c.not("br, span, div").text().trim()||"";c.remove(),c=jQuery('<input type="submit" value="'+h+'">')}!c.is("input[type=submit]")&&!c.is("input[type=button]")||c.is(".ig_form_hidden_field, .ig_form_required_field")||c.addClass("ig_button"),(c.is("input[type=text]")||c.is("input[type=email]"))&&c.attr("size",25),label_class="ig_el_label ig_button_label","."!=f&&(label_class="ig_el_label",c.is("select")?jQuery('<option class="ig_el_placeholder">'+f+"</option>").prependTo(c):c.attr("placeholder",f)),jQuery('<label class="'+label_class+'">'+f+"</label>").appendTo(e),f=".",e.append(c),d.append(e),g++}else c.is("input[type=radio]")&&(label_class="ig_el_label ig_button_label","."!=f&&(label_class="ig_el_label"),jQuery('<label><span class="'+label_class+'">'+f+"</span></label>").prepend(c).appendTo(e),f=".",e.addClass("ig_form_el_radio"),d.append(e),g++)});var h=["","ig_full","ig_half","ig_third","ig_quater"];return g=4>g?g:4,d.find(".ig_form_required_field").length<=0&&d.append('<div class="ig_form_els"><input class="ig_form_required_field" type="text" tabindex="-1" value="" /></div>'),d.addClass(h[g]).find(".ig_form_required_field").parent().removeClass("ig_form_els").css({position:"absolute",left:"-5000px"}).end().end().find(".ig_form_hidden_field").parent().removeClass("ig_form_els").css({display:"none"}),e.append(d),jQuery("<div/>").append(e).html()}return null},Icegram_Message_Type.prototype.render_template=function(){return"function"!=typeof window.icegram.get_template_fn(this.type)&&window.icegram.set_template_fn(this.type,new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+this.template.replace(/[\r\t\n]/g," ").split("{{").join(" ").replace(/((^|\}\})[^\t]*)'/g,"$1\r").replace(/\t=(.*?)\}\}/g,"',$1,'").split(" ").join("');").split("}}").join("p.push('").split("\r").join("\\'")+"');}return p.join('');")),window.icegram.get_template_fn(this.type)(this.data)},Icegram_Message_Type.prototype.pre_render=function(){},Icegram_Message_Type.prototype.post_render=function(){},Icegram_Message_Type.prototype.set_up_show_trigger=function(){if(isNaN(this.data.delay_time))this.show();else if(this.data.delay_time>=0){var a=this;this.timer=setTimeout(function(){a.show()},1e3*this.data.delay_time)}},Icegram_Message_Type.prototype.set_template=function(a){this.template=a},Icegram_Message_Type.prototype.get_template_default=function(){return'<div id="icegram_message_{{=id}}" class="icegram"><div class="ig_headline">{{=headline}}</div></div>'},Icegram_Message_Type.prototype.show=function(a,b){this.is_visible()||(this.animate("in"),this.pre_show(),this.el.show(a),this.el.addClass("ig_show").removeClass("ig_hide"),b!==!0&&this.track("shown"),this.post_show());var c=this;window.icegram.adjustFormContainerHeight(c)},Icegram_Message_Type.prototype.hide=function(a,b){if(this.is_visible()){var c=this;this.animate("out"),this.pre_hide(),setTimeout(function(){c.el.hasClass("ig_no_hide")||c.el.hide(a),c.el.addClass("ig_hide").removeClass("ig_show")},500),b!==!0&&this.track("closed"),this.post_hide()}},Icegram_Message_Type.prototype.set_position=function(){},Icegram_Message_Type.prototype.add_powered_by=function(a){},Icegram_Message_Type.prototype.pre_show=function(){},Icegram_Message_Type.prototype.post_show=function(){},Icegram_Message_Type.prototype.pre_hide=function(){},Icegram_Message_Type.prototype.post_hide=function(){},Icegram_Message_Type.prototype.track=function(a,b){"function"==typeof window.icegram.track&&(b=b||{},jQuery.extend(b,{message_id:this.data.id,campaign_id:this.data.campaign_id,expiry_time:this.data.expiry_time,expiry_time_clicked:this.data.expiry_time_clicked}),window.icegram.track(a,b))},Icegram_Message_Type.prototype.is_visible=function(){return this.el.hasClass("ig_show")},Icegram_Message_Type.prototype.toggle=function(a){this.is_visible()?this.hide(a):this.show(a)},Icegram_Message_Type.prototype.on_click=function(a){if(a.data=a.data||{self:this},jQuery(a.target).filter(".ig_close").length)return void a.data.self.hide();var b=jQuery(a.target).closest(".icegram").find("form:visible").first();(jQuery(a.target).filter(".ig_button, .ig_cta, :submit").length||jQuery(a.target).parents("button[type=submit]").length||jQuery(a.target).parents(".ig_button, .ig_cta").length&&!(b.find(".ig_button, input[type=button], input[type=submit], button[type=submit]").length>0))&&a.data.self.on_cta_click(a)},Icegram_Message_Type.prototype.on_resize=function(a){},Icegram_Message_Type.prototype.on_cta_click=function(a){a.data=a.data||{self:this};var b=jQuery(a.target).closest(".icegram").find("form:visible").first();return jQuery(b).length&&jQuery(b).find(".ig_form_required_field").length&&""!==jQuery(b).find(".ig_form_required_field").val()?(a.preventDefault(),void a.data.self.hide()):(a.data.self.track("clicked"),void(jQuery(b).length?jQuery(b).submit(function(a){jQuery(b).hasClass("ig_form_init_done")&&a.preventDefault()}):"string"==typeof a.data.self.data.link&&""!=a.data.self.data.link?(window.location.href=a.data.self.data.link,a.data.self.hide()):a.data.self.data.hide!==!1&&a.data.self.hide()))},Icegram_Message_Type.prototype.animate=function(a){if("undefined"!=typeof this.data.animation){var b=this.data.animation,c=this;"in"==a?"function"==typeof this.animations[b+"_in"]?this.animations[b+"_in"](c):this.el.hasClass("ig_anim_"+b+"_in")||(this.el.removeClass("ig_anim_"+b+"_out"),setTimeout(function(){c.el.addClass("ig_anim_"+b+"_in")},1)):"out"==a&&("function"==typeof this.animations[b+"_out"]?this.animations[b+"_out"](c):(this.el.removeClass("ig_anim_"+b+"_in"),setTimeout(function(){c.el.addClass("ig_anim_"+b+"_out")},1)))}},String.prototype.ucwords=function(){return this.toLowerCase().replace(/\b[a-z]/g,function(a){return a.toUpperCase()})},Icegram.prototype.adjustFormContainerHeight=function(a){var b="";if(a.el.hasClass("ig_form_left")||a.el.hasClass("ig_form_right")){b=a.el.hasClass("ig_form_left")?"left":"right";var c=a.el.find(".ig_data").outerHeight()>a.el.find(".ig_form_container.layout_"+b).outerHeight()?a.el.find(".ig_data").outerHeight():a.el.find(".ig_form_container.layout_"+b).outerHeight();a.el.find(".ig_form_container").outerHeight(c)}},Icegram.prototype.hexToRgb=function(a){var b=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return b?{r:parseInt(b[1],16),g:parseInt(b[2],16),b:parseInt(b[3],16)}:null},Icegram.prototype.rgbToHsl=function(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i;break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}h=Math.floor(100*h),e=Math.floor(100*e),d=Math.floor(60*d),0>d&&(d+=360)}return{h:d,s:e,l:h}},Icegram.prototype.hexToHsl=function(a){var b=window.icegram.hexToRgb(a);return window.icegram.rgbToHsl(b.r,b.g,b.b)},"function"!=typeof Object.create&&!function(){var a=function(){};Object.create=function(b){if(arguments.length>1)throw Error("Second argument not supported");if(null===b)throw Error("Cannot set a null [[Prototype]]");if("object"!=typeof b)throw TypeError("Argument must be an object");return a.prototype=b,new a}}(),void 0!==typeof jQuery.cookie&&!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});;function Icegram_Message_Type_Action_Bar(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Action_Bar.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Action_Bar.prototype.constructor=Icegram_Message_Type_Action_Bar,Icegram_Message_Type_Action_Bar.prototype.get_template_default=function(){return'<div class="icegram action_bar_{{=id}}" ><div class="ig_action_bar ig_container ig_{{=theme}} ig_no_hide" id="icegram_message_{{=id}}"><div class="ig_content ig_clear_fix"><div class="ig_close" id="ig_close_{{=id}}"><span></span></div><div class="ig_form_container layout_left"></div><div class="ig_data ig_clear_fix"><div class="ig_headline">{{=headline}}</div><div class="ig_message">{{=message}}</div></div><div class="ig_button">{{=label}}</div><div class="ig_form_container layout_right layout_bottom"></div></div></div></div>'},Icegram_Message_Type_Action_Bar.prototype.post_render=function(){void 0!=this.data.use_theme_defaults&&"yes"==this.data.use_theme_defaults||void 0!=this.data.bg_color&&""!=this.data.bg_color&&this.el.find(".ig_close").css("background-color",this.data.bg_color),"21"!==this.data.position&&0==jQuery("#ig_body_pushdown").length&&jQuery("body").prepend('<div id="ig_body_pushdown"></div>')},Icegram_Message_Type_Action_Bar.prototype.set_position=function(){switch(this.data.position){case"21":this.el.addClass("ig_bottom");break;case"01":default:this.el.addClass("ig_top")}},Icegram_Message_Type_Action_Bar.prototype.add_powered_by=function(a){this.el.addClass("ig_has_pwby").find(".ig_content").before('<div class="ig_powered_by" ><a href="'+a.link+'" target="_blank"><img src="'+a.logo+'" title="'+a.text+'"/></a></div>')},Icegram_Message_Type_Action_Bar.prototype.on_click=function(a){return a.data=a.data||{self:this},jQuery(a.target).filter(".ig_show .ig_close, .ig_show span").length?void a.data.self.hide():jQuery(a.target).filter(".ig_hide .ig_close, .ig_hide span").length?void a.data.self.show():void Icegram_Message_Type.prototype.on_click.apply(this,arguments)},Icegram_Message_Type_Action_Bar.prototype.post_show=function(){if("21"!==this.data.position){var a=this.el.outerHeight()||0;jQuery("#ig_body_pushdown").css("display","block").animate({height:a},500),jQuery("*",document.body).not(".ig_action_bar, .ig_popup, .ig_messenger, .ig_inline, .ig_overlay, .ig_sidebar, .ig_tab, .ig_interstitial ,#ig_body_pushdown ").each(function(){var b=window.getComputedStyle(this,null);("fixed"===b.position||"absolute"===b.position&&("BODY"===this.parentNode.nodeName||"HEADER"===this.nodeName))&&!isNaN(parseInt(b.top,10))&&this.getBoundingClientRect().top<=a&&jQuery(this).data("ig_fx_top",b.top).animate({top:parseInt(b.top,10)+a+"px"},300)})}},Icegram_Message_Type_Action_Bar.prototype.pre_hide=function(){"21"!==this.data.position&&(jQuery("#ig_body_pushdown").animate({height:0},300).css("display","none"),jQuery("*",document.body).not(".ig_action_bar, .ig_popup, .ig_messenger, .ig_inline, .ig_overlay, .ig_sidebar, .ig_tab, .ig_interstitial ,#ig_body_pushdown ").each(function(){"undefined"!=typeof jQuery(this).data("ig_fx_top")&&jQuery(this).animate({top:jQuery(this).data("ig_fx_top")},200)}))};;function Icegram_Message_Type_Messenger(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Messenger.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Messenger.prototype.constructor=Icegram_Message_Type_Messenger,Icegram_Message_Type_Messenger.prototype.get_template_default=function(){return'<div class="icegram ig_messenger ig_{{=theme}} ig_container ig_cta" id="icegram_message_{{=id}}"><div class="ig_content"><div class="ig_close" id="ig_close_{{=id}}"></div><div class="ig_data"><div class="ig_headline">{{=headline}}</div><div class="ig_body"><img class="ig_icon" src="{{=icon}}"/><div class="ig_message">{{=message}}</div></div><div class="ig_footer"></div></div></div></div>'},Icegram_Message_Type_Messenger.prototype.set_position=function(){switch(this.data.position){case"20":this.el.addClass("ig_left ig_bottom");break;case"22":default:this.el.addClass("ig_right ig_bottom")}},Icegram_Message_Type_Messenger.prototype.add_powered_by=function(a){this.el.addClass("ig_has_pwby").find(".ig_content").after('<div class="ig_powered_by"><a href="'+a.link+'" target="_blank">'+a.text+"</a></div>")};;function Icegram_Message_Type_Popup(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Popup.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Popup.prototype.constructor=Icegram_Message_Type_Popup,Icegram_Message_Type_Popup.prototype.get_template_default=function(){return'<div id="icegram_message_{{=id}}" class="icegram ig_popup ig_{{=theme}} ig_container mfp-hide"><div class="ig_close" id="popup_box_close_{{=id}}"></div><div class="ig_clear_fix" data={{=id}}><div class="ig_bg_overlay"></div><div class="ig_form_container layout_left"></div><div class="ig_data ig_clear_fix"><div class="ig_headline">{{=headline}}</div><div class="ig_content"><div class="ig_message ig_clear_fix">{{=message}}</div></div><div class="ig_button" >{{=label}}</div></div><div class="ig_form_container layout_right layout_bottom"></div></div></div>'},Icegram_Message_Type_Popup.prototype.post_render=function(){void 0!=this.data.use_theme_defaults&&"yes"==this.data.use_theme_defaults||void 0!=this.data.bg_color&&""!=this.data.bg_color&&this.el.find(".ig_bg_overlay").css("border-color",this.data.bg_color)},Icegram_Message_Type_Popup.prototype.show=function(a,b){if(!this.is_visible()){var c=this,d="#icegram_message_"+this.data.id;this.animate("in"),jQuery.magnificPopup.open({items:{src:d,type:"inline"},showCloseBtn:!1,callbacks:{close:function(){b!==!0&&c.track("closed"),c.el.removeClass("ig_show")},open:function(){window.icegram.adjustFormContainerHeight(c)}}}),c.el.addClass("ig_show").removeClass("ig_hide"),b!==!0&&this.track("shown")}},Icegram_Message_Type_Popup.prototype.add_powered_by=function(a){setTimeout(function(){jQuery(".mfp-wrap").append('<div class="ig_powered_by"><a href="'+a.link+'" target="_blank">'+a.text+"</a></div>")},1e3+1e3*this.data.delay_time)},Icegram_Message_Type_Popup.prototype.hide=function(a,b){if(this.is_visible()){var c="#icegram_message_"+this.data.id,d=this;this.animate("out"),setTimeout(function(){d.el.addClass("ig_hide").removeClass("ig_show"),jQuery.magnificPopup.close({items:{src:c,type:"inline"}})},500)}},"undefined"==typeof jQuery.magnificPopup&&!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isIE7=-1!==c.indexOf("MSIE 7."),b.isIE8=-1!==c.indexOf("MSIE 8."),b.isLowIE=b.isIE7||b.isIE8,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),b.st.showCloseBtn&&(!b.st.closeBtnInside||b.currTemplate[b.currItem.type]===!0)&&b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||2!==c.which&&!c.ctrlKey&&!c.metaKey){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),!d&&"loading"===a&&(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(a,c){if(void 0===c||c===!1)return!0;if(e=a.split("_"),e.length>1){var d=b.find(p+"-"+e[0]);if(d.length>0){var f=e[1];"replaceWith"===f?d[0]!==c[0]&&d.replaceWith(c):"img"===f?d.is("img")?d.attr("src",c):d.replaceWith('<img src="'+c+'" class="'+d.attr("class")+'" />'):d.attr(e[1],c)}}else b.find(p+"-"+a).html(c)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&times;</button>',tClose:"Close (Esc)",tLoading:"Loading..."}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,H&&clearInterval(H),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){H&&clearInterval(H),H=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(H),c++,3===c?e(10):40===c?e(50):100===c&&e(500),void 0)},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:I(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(H&&clearInterval(H),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var J,K=function(){return void 0===J&&(J=void 0!==document.createElement("p").style.MozTransform),J};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return K()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var L="retina";a.magnificPopup.registerModule(L,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+L,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+L,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});;function Icegram_Message_Type_Toast(a){this.width=300,this.sticky=!1,this.duration=1e4,Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Toast.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Toast.prototype.constructor=Icegram_Message_Type_Toast,Icegram_Message_Type_Toast.prototype.get_template_default=function(){return'<li class="icegram ig_toast ig_container ig_{{=theme}} ig_cta" data="{{=id}}" id="icegram_message_{{=id}}"><div class="ig_wrapper"><div class="ig_content"><div class="ig_base"></div><div class="ig_line"></div><img class="ig_icon" src="{{=icon}}"/><div class="ig_headline">{{=headline}}</div><div class="ig_message">{{=message}}</div></div></div></li>'},Icegram_Message_Type_Toast.prototype.pre_render=function(){if("10"!=this.data.position&&"12"!=this.data.position||(this.data.position="20"),jQuery("ul#"+this.data.position).length)var a=jQuery("ul#"+this.data.position);else{var a=jQuery('<ul id="'+this.data.position+'"></ul>').addClass("ig_toast_block").appendTo(this.root_container).hide();a.width(this.width),"00"==this.data.position?a.css({top:"0",left:"0"}).addClass("ig_left").addClass("ig_top"):"01"==this.data.position?a.css({top:"0",left:"50%",margin:"5px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_top"):"02"==this.data.position?a.css({top:"0",right:"0"}).addClass("ig_right").addClass("ig_top"):"20"==this.data.position?a.css({bottom:"0",left:"0"}).addClass("ig_left").addClass("ig_bottom"):"21"==this.data.position?a.css({bottom:"0",left:"50%",margin:"5px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_bottom"):"22"==this.data.position?a.css({bottom:"0",right:"0"}).addClass("ig_right").addClass("ig_bottom"):"11"==this.data.position&&a.css({top:"50%",left:"50%",margin:"-"+this.width/2+"px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_top")}this.root_container=a},Icegram_Message_Type_Toast.prototype.pre_show=function(){!this.root_container.hasClass("active")&&this.root_container.addClass("active").show()},Icegram_Message_Type_Toast.prototype.post_show=function(){var a=this;!this.sticky&&this.duration>0&&setTimeout(function(){a.hide(),a.root_container.children().length||a.root_container.removeClass("active").hide()},this.duration)};
assets/js/main.min.js CHANGED
@@ -1 +1 @@
1
- function load_scripts_and_css(a){var b={};jQuery.each(a.css,function(a,c){b["ig_css_"+a]=1}),jQuery.each(a.scripts,function(a,c){b["ig_script_"+a]=1});var c=function(c){var d=c.target.id||"";""!=d&&b.hasOwnProperty(d)&&delete b[d],jQuery.isEmptyObject(b)&&(jQuery(window).trigger("scripts_loaded.icegram"),jQuery(function(){window.icegram=new Icegram,window.icegram.init(a),jQuery("body").addClass("ig_"+icegram_pre_data.post_obj.device),icegram_timing.end=Date.now()}))};jQuery.each(a.css,function(a,b){jQuery("<link>").attr("type","text/css").attr("rel","stylesheet").attr("id","ig_css_"+a).attr("media","all").appendTo("head").on("load",c).attr("href",b)});var d=a.scripts.shift();jQuery("<script>").attr("type","text/javascript").attr("id","ig_script_0").appendTo("body").on("load",function(b){c(b),jQuery.each(a.scripts,function(a,b){jQuery("<script>").attr("type","text/javascript").attr("id","ig_script_"+(a+1)).appendTo("body").on("load",c).attr("src",b)})}).attr("src",d)}try{var icegram_data,icegram_timing={};icegram_pre_data.post_obj.referral_url=window.location.href,icegram_timing.start=Date.now(),"yes"===icegram_pre_data.post_obj.cache_compatibility?(jQuery.ajax({url:icegram_pre_data.ajax_url,type:"POST",async:!0,cache:!1,data:icegram_pre_data.post_obj,dataType:"json",success:function(a){a?(icegram_data=a,load_scripts_and_css(icegram_data)):jQuery(".ig_inline_container:empty").remove()},error:function(a){}}),jQuery(window).on("init.icegram",function(a,b){b&&jQuery.each(b.messages,function(a,b){b.data.assets&&(jQuery.each(b.data.assets.styles||[],function(a,b){var c=jQuery("<div/>").html(b).find("link").attr("href");c&&0==jQuery('link[href="'+c+'"]').length&&jQuery("body").append(b)}),jQuery.each(b.data.assets.scripts||[],function(a,b){var c=jQuery("<div/>").html("<script "+b).find("script").attr("src");c&&0==jQuery('script[src="'+c+'"]').length&&jQuery("body").append("<script "+b)}))})})):"undefined"!=typeof icegram_data&&load_scripts_and_css(icegram_data),jQuery(window).on("init.icegram",function(a,b){if(b&&jQuery.each(b.messages,function(a,b){"yes"==b.data.use_custom_code&&"undefined"!=typeof b.data.custom_js&&jQuery("body").append(b.data.custom_js)}),jQuery("body").find(".trigger_onclick").length){var c="";jQuery.each(jQuery("body").find(".trigger_onclick"),function(a,d){var e=jQuery(d).data("campaigns"),f=b.get_message_by_campaign_id(e);jQuery.each(f,function(a,b){c+="icegram.get_message_by_id("+b.data.id+").show();"}),jQuery(d).children().length?jQuery(d).children().attr("onclick",c):jQuery(d).attr("onclick",c)})}})}catch(err){console.log(err)}
1
+ function load_scripts_and_css(a){var b={};jQuery.each(a.css,function(a,c){b["ig_css_"+a]=1}),jQuery.each(a.scripts,function(a,c){b["ig_script_"+a]=1});var c=function(c){var d=c.target.id||"";""!=d&&b.hasOwnProperty(d)&&delete b[d],jQuery.isEmptyObject(b)&&(jQuery(window).trigger("scripts_loaded.icegram"),jQuery(function(){window.icegram=new Icegram,window.icegram.init(a),jQuery("body").addClass("ig_"+icegram_pre_data.post_obj.device),icegram_timing.end=Date.now()}))};jQuery.each(a.css,function(a,b){jQuery("<link>").attr("type","text/css").attr("rel","stylesheet").attr("id","ig_css_"+a).attr("media","all").appendTo("head").on("load",c).attr("href",b)});var d=a.scripts.shift();jQuery("<script>").attr("type","text/javascript").attr("id","ig_script_0").appendTo("body").on("load",function(b){c(b),jQuery.each(a.scripts,function(a,b){jQuery("<script>").attr("type","text/javascript").attr("id","ig_script_"+(a+1)).appendTo("body").on("load",c).attr("src",b)})}).attr("src",d)}try{var icegram_data,icegram_timing={};icegram_pre_data.post_obj.referral_url=window.location.href,icegram_timing.start=Date.now(),"yes"===icegram_pre_data.post_obj.cache_compatibility?(jQuery.ajax({url:icegram_pre_data.ajax_url,type:"POST",async:!0,cache:!1,data:icegram_pre_data.post_obj,dataType:"json",success:function(a){a?(icegram_data=a,load_scripts_and_css(icegram_data)):jQuery(".ig_inline_container:empty").remove()},error:function(a){}}),jQuery(window).on("init.icegram",function(a,b){b&&jQuery.each(b.messages,function(a,b){b.data.assets&&(jQuery.each(b.data.assets.styles||[],function(a,b){var c=jQuery("<div/>").html(b).find("link").attr("href");c&&0==jQuery('link[href="'+c+'"]').length&&jQuery("body").append(b)}),jQuery.each(b.data.assets.scripts||[],function(a,b){var c=jQuery("<div/>").html("<script "+b).find("script").attr("src");c&&0==jQuery('script[src="'+c+'"]').length&&jQuery("body").append("<script "+b)}))})})):"undefined"!=typeof icegram_data&&load_scripts_and_css(icegram_data),jQuery(window).on("init.icegram",function(a,b){b&&jQuery.each(b.messages,function(a,b){"yes"==b.data.use_custom_code&&"undefined"!=typeof b.data.custom_js&&jQuery("body").append(b.data.custom_js)}),jQuery("body").find(".trigger_onclick").length&&jQuery.each(jQuery("body").find(".trigger_onclick"),function(a,c){var d="",e=jQuery(c).data("campaigns"),f=b.get_message_by_campaign_id(e);jQuery.each(f,function(a,b){d+="icegram.get_message_by_id("+b.data.id+").show();"}),jQuery(c).children().length?jQuery(c).children().attr("onclick",d):jQuery(c).attr("onclick",d)})})}catch(err){console.log(err)}
classes/compat/class-icegram-compat-icegram-rainmaker.php DELETED
@@ -1,73 +0,0 @@
1
- <?php
2
- if ( !defined( 'ABSPATH' ) ) exit;
3
- /**
4
- * Icegram Campaign Admin class
5
- */
6
- if ( !class_exists( 'Icegram_Compat_icegram_rainmaker' ) ) {
7
- class Icegram_Compat_icegram_rainmaker extends Icegram_Compat_Base {
8
-
9
- function __construct() {
10
- global $icegram;
11
- parent::__construct();
12
- }
13
-
14
- function render_js() {
15
- ?>
16
- <script type="text/javascript">
17
- jQuery(function() {
18
- jQuery( window ).on( "init.icegram", function(e, ig) {
19
- // Find and init all RM forms within Icegram messages/divs
20
- if(ig){
21
- jQuery.each(ig.messages, function(i, msg){
22
- var forms = jQuery(msg.el).find('.rainmaker_form form');
23
- forms.each(function(i, form){
24
- if(!jQuery(form).hasClass('rm_init_done')){
25
- window.rainmaker.init(form);
26
- jQuery(form).addClass('rm_init_done');
27
- }
28
- });
29
- });
30
- }
31
-
32
- }); // init.icegram
33
-
34
- //Handle CTA function(s) after successful submission of form
35
- jQuery( window ).on('success.rm', function(e, form, response) {
36
- if( typeof icegram !== 'undefined'){
37
- var msg_id = (jQuery(e.target.closest('[id^=icegram_message_]')).attr('id') || '').split('_').pop() || 0 ;
38
- var msg = icegram.get_message_by_id(msg_id) || undefined;
39
- if(typeof msg !== 'undefined'){
40
- if(msg.data.cta === 'form_via_ajax' && msg.el.find('.rm_subscription').length > 0){
41
- msg.el.trigger('form_success.ig_cta', [msg]);
42
- } else if(msg.data.cta === 'form' || !msg.data.cta){
43
- response_text = '<div class="ig_form_response_text">'+ (msg.data.response_text || msg.el.find('.rm_form_message').html() || '') +'</div>';
44
- msg.el.find('.ig_form_container, .ig_message, .ig_headline').hide();
45
- var appendTo = msg.el.filter('.ig_container');
46
- if(jQuery.inArray(msg.data.type, ['interstitial', 'messenger']) !== -1){
47
- appendTo = msg.el.find('.ig_message');
48
- appendTo.show();
49
- msg.el.find('.ig_headline').text('').show();
50
- }else if(msg.data.type === 'tab'){
51
- //TODO :: hide is not working
52
- appendTo = msg.el.find('.ig_data');
53
- msg.el.find('.ig_headline').show();
54
- }
55
- try{
56
- appendTo.append(response_text);
57
- }catch(err){
58
- console.log(err);
59
- }
60
- }
61
- }
62
-
63
- }
64
- }); //success.rm
65
-
66
- });
67
-
68
- </script>
69
-
70
- <?php
71
- }
72
- }
73
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
icegram.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Icegram - Popups, Optins, CTAs & lot more...
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.9.19
7
  * Author: icegram
8
  * Author URI: http://www.icegram.com/
9
  *
@@ -35,7 +35,7 @@ class Icegram {
35
 
36
  function __construct() {
37
 
38
- $this->version = "1.9.19";
39
  $this->shortcode_instances = array();
40
  $this->mode = 'local';
41
  $this->plugin_url = untrailingslashit( plugins_url( '/', __FILE__ ) );
@@ -84,7 +84,9 @@ class Icegram {
84
  add_action( 'icegram_loaded', array( &$this, 'load_compat_classes') );
85
 
86
  // execute shortcode in sidebar
87
- add_filter( 'widget_text', array(&$this , 'ig_widget_text_filter') );
 
 
88
 
89
  if ( defined( 'DOING_AJAX' ) ) {
90
  if($this->cache_compatibility === 'yes'){
@@ -212,7 +214,8 @@ class Icegram {
212
  '<a style="display:inline-block" class="ig-admin-btn ig-admin-btn-secondary" href="?dismiss_admin_notice=1&option_name='.$option_name.'">'.$no_offer_text.'</a>
213
  </div>';
214
  }
215
- //Admin notice for Rainmaker
 
216
  $admin_notice_for_rm = '';
217
  if(('install_plugins') && !in_array('icegram-rainmaker/icegram-rainmaker.php', $active_plugins) && !get_option('ig_rm_notice_icegram')){
218
  $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . 'icegram-rainmaker'), 'install-plugin_' . 'icegram-rainmaker');
@@ -1674,8 +1677,36 @@ class Icegram {
1674
  exit;
1675
  }
1676
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1677
  }
1678
 
 
1679
  function initialize_icegram() {
1680
  global $icegram;
1681
 
3
  * Plugin Name: Icegram - Popups, Optins, CTAs & lot more...
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.9.20
7
  * Author: icegram
8
  * Author URI: http://www.icegram.com/
9
  *
35
 
36
  function __construct() {
37
 
38
+ $this->version = "1.9.20";
39
  $this->shortcode_instances = array();
40
  $this->mode = 'local';
41
  $this->plugin_url = untrailingslashit( plugins_url( '/', __FILE__ ) );
84
  add_action( 'icegram_loaded', array( &$this, 'load_compat_classes') );
85
 
86
  // execute shortcode in sidebar
87
+ add_filter( 'widget_text', array(&$this, 'ig_widget_text_filter') );
88
+
89
+ add_filter( 'rainmaker_validate_request', array(&$this,'form_submission_validate_request'), 10, 2);
90
 
91
  if ( defined( 'DOING_AJAX' ) ) {
92
  if($this->cache_compatibility === 'yes'){
214
  '<a style="display:inline-block" class="ig-admin-btn ig-admin-btn-secondary" href="?dismiss_admin_notice=1&option_name='.$option_name.'">'.$no_offer_text.'</a>
215
  </div>';
216
  }
217
+
218
+ //Admin notice for Rainmaker
219
  $admin_notice_for_rm = '';
220
  if(('install_plugins') && !in_array('icegram-rainmaker/icegram-rainmaker.php', $active_plugins) && !get_option('ig_rm_notice_icegram')){
221
  $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . 'icegram-rainmaker'), 'install-plugin_' . 'icegram-rainmaker');
1677
  exit;
1678
  }
1679
 
1680
+ public static function form_submission_validate_request($request_data){
1681
+ if(!empty($request_data)){
1682
+ // Check for Remote Rainmaker form submission request
1683
+ $request_data['is_remote'] = false;
1684
+ if(!empty($request_data['ig_mode'] && $request_data['ig_mode'] === 'remote')){
1685
+ $ig_remote_url = $request_data['ig_remote_url'];
1686
+ if(!empty($request_data['ig_campaign_id'])){
1687
+ $rules = get_post_meta( $request_data['ig_campaign_id'], 'icegram_campaign_target_rules', true );
1688
+ if( !empty($rules['remote_urls']) && is_array($rules['remote_urls']) ){
1689
+ foreach ($rules['remote_urls'] as $remote_url_pattern) {
1690
+ $valid = Icegram_Campaign::is_valid_url($remote_url_pattern , $ig_remote_url);
1691
+ if( $valid ){
1692
+ $request_data['is_remote'] = true;
1693
+ break;
1694
+ }
1695
+ }
1696
+ //TODO :: discard the the remote request and data
1697
+ // if($request_data['is_remote'] == false){
1698
+ // return array();
1699
+ // }
1700
+ }
1701
+
1702
+ }
1703
+ }
1704
+ }
1705
+ return $request_data;
1706
+ }
1707
  }
1708
 
1709
+
1710
  function initialize_icegram() {
1711
  global $icegram;
1712
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.icegram.com/
4
  Tags: popup, window, hellobar, optin, lead capture, marketing, form, notification, messenger, targeting, monster, ninja ,wordpress lead generation, wordpress lightbox optin, wordpress lightbox optin form, wordpress lightbox optins, wordpress mobile optin forms, wordpress mobile popup, wordpress mobile popups, wordpress optin form, wordpress overlay popup, wordpress popup, wordpress popup form, wordpress popup plugin, wordpress popup solution, wordpress popups , popups, subscribe, wp popups, optin bars, action grabber, constant contact, toast notifications, leads, lists, builder, action bar, floating bar, footer bar, hellobar alternative, pop over, Popup plugin, aweber, campaign monitor, constant contact, email list, exit-intent, getresponse, analytics, Hubspot, icontact, infusionsoft, newsletter, Mailing list pop-up, retargeting, Animation,Popups with Animation ,Responsive Popup, split testing, AB testing
5
  Requires at least: 3.9
6
  Tested up to: 4.5.3
7
- Stable tag: 1.9.19
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -153,6 +153,9 @@ Contact Us, provide as much detail of the problem as you can. We will try to sol
153
  3. Editing an Icegram campaign - add multiple messages, edit them, targeting rules, full HTML editor, themes and more
154
 
155
  == Upgrade Notice ==
 
 
 
156
  = 1.9.19 =
157
  Secured Icegram from XSS vulnerability
158
 
@@ -287,6 +290,9 @@ Initial Release
287
 
288
 
289
  == Changelog ==
 
 
 
290
  = 1.9.19 =
291
  * Fix: Secured Icegram from XSS vulnerability(Thanks to Ipstenu (Mika Epstein))
292
 
4
  Tags: popup, window, hellobar, optin, lead capture, marketing, form, notification, messenger, targeting, monster, ninja ,wordpress lead generation, wordpress lightbox optin, wordpress lightbox optin form, wordpress lightbox optins, wordpress mobile optin forms, wordpress mobile popup, wordpress mobile popups, wordpress optin form, wordpress overlay popup, wordpress popup, wordpress popup form, wordpress popup plugin, wordpress popup solution, wordpress popups , popups, subscribe, wp popups, optin bars, action grabber, constant contact, toast notifications, leads, lists, builder, action bar, floating bar, footer bar, hellobar alternative, pop over, Popup plugin, aweber, campaign monitor, constant contact, email list, exit-intent, getresponse, analytics, Hubspot, icontact, infusionsoft, newsletter, Mailing list pop-up, retargeting, Animation,Popups with Animation ,Responsive Popup, split testing, AB testing
5
  Requires at least: 3.9
6
  Tested up to: 4.5.3
7
+ Stable tag: 1.9.20
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
153
  3. Editing an Icegram campaign - add multiple messages, edit them, targeting rules, full HTML editor, themes and more
154
 
155
  == Upgrade Notice ==
156
+ = 1.9.20 =
157
+ Rainmaker compatibility
158
+
159
  = 1.9.19 =
160
  Secured Icegram from XSS vulnerability
161
 
290
 
291
 
292
  == Changelog ==
293
+ = 1.9.20 =
294
+ * Update: Rainmaker form compatibility with Icegram's Remote addon
295
+
296
  = 1.9.19 =
297
  * Fix: Secured Icegram from XSS vulnerability(Thanks to Ipstenu (Mika Epstein))
298
 
trunk/about-icegram.php ADDED
@@ -0,0 +1,301 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * About Icegram
4
+ */
5
+
6
+ if ( !defined( 'ABSPATH' ) ) exit;
7
+
8
+ // Actions for support
9
+ add_action( 'admin_footer', 'icegram_support_ticket_content' );
10
+
11
+ function icegram_support_ticket_content() {
12
+ global $current_user, $pagenow, $typenow, $icegram;
13
+
14
+ if ( $pagenow != 'edit.php' ) return;
15
+ if ( $typenow != 'ig_campaign') return;
16
+ if ( !( $current_user instanceof WP_User ) || !current_user_can( 'manage_options' )) return;
17
+
18
+ if( isset( $_POST['submit_query'] ) && $_POST['submit_query'] == "Send" && !empty($_POST['client_email'])){
19
+ check_admin_referer( 'icegram-submit-query' );
20
+ $additional_info = ( isset( $_POST['additional_information'] ) && !empty( $_POST['additional_information'] ) ) ? sanitize_text_field( $_POST['additional_information'] ) : '';
21
+ $additional_info = str_replace( '###', '<br />', $additional_info );
22
+ $additional_info = str_replace( array( '[', ']' ), '', $additional_info );
23
+
24
+ $from = 'From: ';
25
+ $from .= ( isset( $_POST['client_name'] ) && !empty( $_POST['client_name'] ) ) ? sanitize_text_field( $_POST['client_name'] ) : '';
26
+ $from .= ' <' . sanitize_email( $_POST['client_email'] ) . '>' . "\r\n";
27
+ $headers .= $from;
28
+ $headers .= str_replace('From: ', 'Reply-To: ', $from);
29
+ $headers .= 'MIME-Version: 1.0' . "\r\n";
30
+ $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
31
+ $message = $additional_info . '<br /><br />'.nl2br(sanitize_text_field($_POST['message'])) ;
32
+ wp_mail( 'hello@icegram.com', sanitize_text_field($_POST['subject']), $message, $headers );
33
+ header('Location: ' . $_SERVER['HTTP_REFERER'] );
34
+
35
+ }
36
+ ?>
37
+ <div id="icegram_post_query_form" style="display: none;">
38
+ <?php
39
+
40
+ if ( !wp_script_is('jquery') ) {
41
+ wp_enqueue_script('jquery');
42
+ wp_enqueue_style('jquery');
43
+ }
44
+
45
+ $first_name = get_user_meta($current_user->ID, 'first_name', true);
46
+ $last_name = get_user_meta($current_user->ID, 'last_name', true);
47
+ $name = $first_name . ' ' . $last_name;
48
+ $customer_name = ( !empty( $name ) ) ? $name : $current_user->data->display_name;
49
+ $customer_email = $current_user->data->user_email;
50
+
51
+ ?>
52
+ <form id="icegram_form_post_query" method="POST" action="" enctype="multipart/form-data">
53
+ <script type="text/javascript">
54
+ jQuery(function(){
55
+ jQuery('input#icegram_submit_query').click(function(e){
56
+ var error = false;
57
+
58
+ var client_name = jQuery('input#client_name').val();
59
+ if ( client_name == '' ) {
60
+ jQuery('input#client_name').css('border-color', 'red');
61
+ error = true;
62
+ } else {
63
+ jQuery('input#client_name').css('border-color', '');
64
+ }
65
+
66
+ var client_email = jQuery('input#client_email').val();
67
+ if ( client_email == '' ) {
68
+ jQuery('input#client_email').css('border-color', 'red');
69
+ error = true;
70
+ } else {
71
+ jQuery('input#client_email').css('border-color', '');
72
+ }
73
+
74
+ var subject = jQuery('table#icegram_post_query_table input#subject').val();
75
+ if ( subject == '' ) {
76
+ jQuery('input#subject').css('border-color', 'red');
77
+ error = true;
78
+ } else {
79
+ jQuery('input#subject').css('border-color', '');
80
+ }
81
+
82
+ var message = jQuery('table#icegram_post_query_table textarea#message').val();
83
+ if ( message == '' ) {
84
+ jQuery('textarea#message').css('border-color', 'red');
85
+ error = true;
86
+ } else {
87
+ jQuery('textarea#message').css('border-color', '');
88
+ }
89
+
90
+ if ( error == true ) {
91
+ jQuery('label#error_message').text('* All fields are compulsory.');
92
+ e.preventDefault();
93
+ } else {
94
+ jQuery('label#error_message').text('');
95
+ }
96
+
97
+ });
98
+
99
+ jQuery(".icegram-contact-us a.thickbox").click( function(){
100
+ setTimeout(function() {
101
+ jQuery('#TB_ajaxWindowTitle').text('Send your query');
102
+ }, 0 );
103
+ });
104
+
105
+ jQuery('div#TB_ajaxWindowTitle').each(function(){
106
+ var window_title = jQuery(this).text();
107
+ if ( window_title.indexOf('Send your query') != -1 ) {
108
+ jQuery(this).remove();
109
+ }
110
+ });
111
+
112
+ jQuery('input,textarea').keyup(function(){
113
+ var value = jQuery(this).val();
114
+ if ( value.length > 0 ) {
115
+ jQuery(this).css('border-color', '');
116
+ jQuery('label#error_message').text('');
117
+ }
118
+ });
119
+ jQuery('.update-nag, .ig_st_notice').hide();
120
+
121
+ });
122
+ </script>
123
+ <table id="icegram_post_query_table">
124
+ <tr>
125
+ <td><label for="client_name"><?php _e('Name', 'icegram'); ?>*</label></td>
126
+ <td><input type="text" class="regular-text sm_text_field" id="client_name" name="client_name" value="<?php echo $customer_name; ?>" /></td>
127
+ </tr>
128
+ <tr>
129
+ <td><label for="client_email"><?php _e('E-mail', 'icegram'); ?>*</label></td>
130
+ <td><input type="email" class="regular-text sm_text_field" id="client_email" name="client_email" value="<?php echo $customer_email; ?>" /></td>
131
+ </tr>
132
+ <tr>
133
+ <td><label for="subject"><?php _e('Subject', 'icegram'); ?>*</label></td>
134
+ <td><input type="text" class="regular-text sm_text_field" id="subject" name="subject" value="<?php echo ( !empty( $subject ) ) ? $subject : ''; ?>" /></td>
135
+ </tr>
136
+ <tr>
137
+ <td style="vertical-align: top; padding-top: 12px;"><label for="message"><?php _e('Message', 'icegram'); ?>*</label></td>
138
+ <td><textarea id="message" name="message" rows="10" cols="60"><?php echo ( !empty( $message ) ) ? $message : ''; ?></textarea></td>
139
+ </tr>
140
+ <tr>
141
+ <td></td>
142
+ <td><label id="error_message" style="color: red;"></label></td>
143
+ </tr>
144
+ <tr>
145
+ <td></td>
146
+ <td><input type="submit" class="button" id="icegram_submit_query" name="submit_query" value="Send" /></td>
147
+ </tr>
148
+ </table>
149
+ <?php wp_nonce_field( 'icegram-submit-query'); ?>
150
+ <input type="hidden" id="current_plugin" name="additional_info[current_plugin]" value="Icegram <?php echo $icegram->version; ?>" />
151
+ </form>
152
+ </div>
153
+ <?php
154
+ }
155
+
156
+ if ( !wp_script_is( 'thickbox' ) ) {
157
+ if ( !function_exists( 'add_thickbox' ) ) {
158
+ require_once ABSPATH . 'wp-includes/general-template.php';
159
+ }
160
+ add_thickbox();
161
+ }
162
+
163
+ ?>
164
+ <div class="wrap about-wrap icegram">
165
+ <div class="about-header">
166
+ <div class="about-text icegram-about-text">
167
+ <strong><?php _e( "Welcome to Icegram.", "icegram" ); ?></strong>
168
+ <?php _e( " Your sample campaign is ready!", "icegram" )?>
169
+ <?php
170
+ $sample_id = get_option('icegram_sample_data_imported');
171
+ $view_campaign = admin_url( 'post.php?post='.$sample_id[0].'&action=edit' );
172
+ $preview_url = home_url('?campaign_preview_id='.$sample_id[0]);
173
+ $assets_base = $this->plugin_url . '/assets/images/';
174
+ ?>
175
+ <p class="icegram-actions">
176
+ <a class="button button-primary button-large" href="<?php echo $preview_url; ?>" target="_blank" ><?php _e( 'Preview Your First Campaign', 'icegram' ); ?></a>
177
+ <span style="margin: 0 .5em"><?php _e( "OR", "icegram")?></span>
178
+ <a href="<?php echo $view_campaign ; ?>"> <strong><?php _e( 'Edit & Publish it.', 'icegram' ); ?></strong></a>
179
+ </p>
180
+ </div>
181
+ <div class="icegram-badge">
182
+ <?php printf(__( "Version: %s", "icegram"), $this->version ); ?>
183
+ </div>
184
+ <div class="icegram-support">
185
+ <?php _e( 'Questions? Need Help?', "icegram" ); ?>
186
+ <div id="icegram-contact-us" class="icegram-contact-us"><a class="thickbox" href="<?php echo admin_url() . "#TB_inline?inlineId=icegram_post_query_form&post_type=ig_campaign" ?>"><?php _e("Contact Us", "icegram"); ?></a></div>
187
+ </div>
188
+ <?php do_action('icegram_about_changelog'); ?>
189
+ </div>
190
+ <!-- <hr> -->
191
+ <div class="changelog">
192
+ <!-- <hr> -->
193
+ <div class="about-text">
194
+ <?php _e("Do read Icegram's core concepts below to understand how you can use Icegram to ", "icegram"); ?>
195
+ <strong><?php _e("inspire, convert and engage", "icegram"); ?></strong>
196
+ <?php _e("your audience.", "icegram"); ?>
197
+ </div>
198
+
199
+ <div class="feature-section col three-col">
200
+ <h2 class="icegram-dashicons dashicons-testimonial"><?php _e( "Messages", "icegram" ); ?></h2>
201
+ <div class="col-1">
202
+ <p><?php _e("A 'Message' is a communication you want to deliver to your audience.","icegram"); ?></p>
203
+ <p><?php _e("And Icegram comes with not one, but four message types.","icegram"); ?></p>
204
+ <p><?php _e("Different message types look and behave differently, but they all have many common characteristics. For instance, most message types will allow you to set a headline, a body text, label for the ‘call to action’ button, a link for that button, theme and styling options, animation effect and position on screen where that message should show.","icegram"); ?></p>
205
+ <?php do_action('icegram_about_after_core_message_types_col1'); ?>
206
+ </div>
207
+ <div class="col-2">
208
+ <h4><?php _e("Action Bar", "icegram"); ?></h4>
209
+ <img src="<?php echo $assets_base; ?>/sketch-action-bar.png" width="180" height="145">
210
+ <p><?php _e("An action bar is a proven attention grabber. It shows up as a solid bar either at top or bottom. Use it for your most important messages or time sensitive announcements. Put longer content in it and it acts like a collapsible panel!", "icegram"); ?></p>
211
+ <h4><?php _e("Messenger", "icegram"); ?></h4>
212
+ <img src="<?php echo $assets_base; ?>/sketch-messenger.png" width="180" height="145">
213
+ <p><?php _e("A messenger is best used to invoke interest while your visitor is reading your content. Users perceive it as something new, important and urgent and are highly likely to click on it.", "icegram"); ?></p>
214
+ <?php do_action('icegram_about_after_core_message_types_col2'); ?>
215
+ </div>
216
+ <div class="col-3 last-feature">
217
+ <h4><?php _e("Toast Notification", "icegram"); ?></h4>
218
+ <img src="<?php echo $assets_base; ?>/sketch-toast-notification.png" width="180" height="145">
219
+ <p><?php _e("Want to alert your visitor about some news, an update from your blog, a social proof or an offer? Use Icegram’s unique toast notification, it will catch their attention, let them click on the message, and disappear after a while.", "icegram"); ?></p>
220
+ <h4><?php _e("Popup", "icegram"); ?></h4>
221
+ <img src="<?php echo $assets_base; ?>/sketch-popup.png" width="180" height="145">
222
+ <p><?php _e("Lightbox popup windows are most widely used for lead capture, promotions and additional content display. Ask visitors to sign up to your newsletter, or like you on social networks, or tell them about a special offer...", "icegram"); ?></p>
223
+ <?php do_action('icegram_about_after_core_message_types_col3'); ?>
224
+ </div>
225
+ </div>
226
+ <hr>
227
+
228
+ <?php do_action('icegram_about_after_core_message_types'); ?>
229
+
230
+ <div class="feature-section col three-col">
231
+ <h2 class="icegram-dashicons dashicons-megaphone"><?php _e("Campaigns", "icegram"); ?></h2>
232
+ <div class="col-1">
233
+ <p><strong><?php _e("Campaign = Messages + Rules", "icegram"); ?></strong></p>
234
+ <p><?php _e("A campaign allows sequencing multiple messages and defining targeting rules. Create different campaigns for different marketing goals. Icegram supports showing multiple campaigns on any page.", "icegram"); ?></p>
235
+ <p><?php _e("You can always preview your campaign to ensure campaign works the way you want, before making it live.", "icegram"); ?></p>
236
+ <?php do_action('icegram_about_after_core_campaigns_col1'); ?>
237
+ </div>
238
+ <div class="col-2">
239
+ <h4><?php _e("Multiple Messages & Sequencing", "icegram"); ?></h4>
240
+ <img src="<?php echo $assets_base; ?>/sketch-multiple-sequence.png" width="180" height="145">
241
+ <p><?php _e("Add one or as many messages to a campaign as you want. Also choose the number of seconds after which each message should show up. Showing multiple messages for same goal, but with slightly different content / presentation, greatly improves conversions.", "icegram"); ?></p>
242
+ <?php do_action('icegram_about_after_core_campaigns_col2'); ?>
243
+ </div>
244
+ <div class="col-3 last-feature">
245
+ <h4><?php _e("Targeting Rules", "icegram"); ?></h4>
246
+ <img src="<?php echo $assets_base; ?>/sketch-rules.png" width="180" height="145">
247
+ <p><?php _e("You can control who sees a campaign – and on what device, which pages does it show on, and what time period will it stay active for. You can run different campaigns with different rules to maximize engagement.", "icegram"); ?></p>
248
+ <?php do_action('icegram_about_after_core_campaigns_col3'); ?>
249
+ </div>
250
+ </div>
251
+
252
+ <?php do_action('icegram_about_after_core_campaigns'); ?>
253
+
254
+ <hr>
255
+ <div class="feature-section col two-col">
256
+ <h2 class="icegram-dashicons dashicons-editor-help"><?php _e("FAQ / Common Problems", "icegram"); ?></h2>
257
+ <div class="col-1">
258
+
259
+ <h4><?php _e("Messages look broken / formatting is weird...", "icegram"); ?></h4>
260
+ <p><?php _e("This is most likely due to CSS conflicts with current theme. We suggest using simple formatting for messages. You can also write custom CSS in your theme to fix any problems.", "icegram"); ?></p>
261
+
262
+ <h4><?php _e("Extra Line Breaks / Paragraphs in messages...", "icegram"); ?></h4>
263
+ <p><?php _e("Go to HTML mode in content editor and pull your custom HTML code all together in one line. Don't leave blank lines between two tags. That should fix it.", "icegram"); ?></p>
264
+
265
+ <h4><?php _e("How do I add custom CSS for messages?", "icegram"); ?></h4>
266
+ <p><?php _e("You can use custom CSS/JS inline in your message HTML. You can also use your theme's custom JS / CSS feature to add your changes.", "icegram"); ?></p>
267
+
268
+ <h4><?php _e("Optin Forms / Mailing service integration...", "icegram"); ?></h4>
269
+ <p><?php _e("You can embed any optin / subscription form to your Icegram messages using 'Embed Form' button above text editor. Paste in form HTML code and let Icegram clean it up! You may even use a shortcode if you are using a WP plugin from your newsletter / lead capture service.", "icegram"); ?></p>
270
+
271
+ <h4><?php _e("How many messages should I show on a page?", "icegram"); ?></h4>
272
+ <p><?php _e("While Icegram provides you lots of different message types and ability to add multiple messages to a campaign, we discourage you to go overboard. We've observed two messages on a page work well, but YMMV!", "icegram"); ?></p>
273
+
274
+ <?php do_action('icegram_about_after_faq_col1'); ?>
275
+
276
+ </div>
277
+ <div class="col-2 last-feature">
278
+ <h4><?php _e("Preview does not work / not refreshing...", "icegram"); ?></h4>
279
+ <p><?php _e("Doing a browser refresh while previewing will not show your most recent changes. Click 'Preview' button to see a preview with your latest changes.", "icegram"); ?></p>
280
+
281
+ <h4><?php _e("Can I use shortcodes in a message?", "icegram"); ?></h4>
282
+ <p><?php _e("Yes! Messages support shortcodes. You may need to adjust CSS so the shortcode output looks good in your message.", "icegram"); ?></p>
283
+
284
+ <h4><?php _e("WPML / Multilingual usage...", "icegram"); ?></h4>
285
+ <p><?php _e("Go to <code>Messages</code> from Icegram menu. Edit a message and translate it like any other post. Icegram will show translated message where possible. Choose <code>All posts</code> under WPML Language setting - Blog Posts to display, to fall back to default language messages.", "icegram"); ?></p>
286
+
287
+ <?php do_action('icegram_about_after_faq_col2'); ?>
288
+
289
+ <h4><?php _e("I can't find a way to do X...", "icegram"); ?></h4>
290
+ <p><?php _e("Icegram is actively developed. If you can't find your favorite feature (or have a suggestion) contact us. We'd love to hear from you.", "icegram"); ?></p>
291
+
292
+ <h4><?php _e("I'm facing a problem and can't find a way out...", "icegram"); ?></h4>
293
+ <p><a class="thickbox" href="<?php echo admin_url() . "#TB_inline?inlineId=icegram_post_query_form&post_type=ig_campaign" ?>"><?php _e("Contact Us", "icegram"); ?></a><?php _e(", provide as much detail of the problem as you can. We will try to solve the problem ASAP.", "icegram"); ?></p>
294
+
295
+ </div>
296
+ </div>
297
+
298
+ <?php do_action('icegram_about_after_faq'); ?>
299
+
300
+ </div>
301
+ </div>
trunk/addons.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script type="text/javascript">
2
+ jQuery(document).ready(function(){
3
+ jQuery('body').on('click', '.icegram_add-ons_filter li', function(event){
4
+ jQuery(this).parent().find('a').removeClass('current');
5
+ jQuery(this).find('a').addClass('current');
6
+ //detect which tab filter item was selected
7
+ var selected_filter = jQuery(event.target).data('type');
8
+ if(selected_filter !== 'all'){
9
+ jQuery('.cd-gallery').find('li:not(".'+selected_filter+'")').fadeOut(100);
10
+ jQuery('.cd-gallery').find('li.'+selected_filter).fadeIn(100);
11
+ }else{
12
+ jQuery('.cd-gallery').find('li').fadeIn(100);
13
+ }
14
+ });
15
+ jQuery('.update-nag').hide();
16
+ });
17
+ </script>
18
+ <style>
19
+ .ig_addons_wrap .cd-tab-filter{
20
+ display: inline-block;
21
+ background-color: #FFF;
22
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.08);
23
+ z-index: 1;
24
+ padding: 0px 10px 8px 3px;
25
+ font-size: 1.2em;
26
+ width: 90%;
27
+ }
28
+ .ig_addons_wrap .cd-tab-filter ul{
29
+ background: rgba(0, 0, 0, 0);
30
+ position: static;
31
+ box-shadow: none;
32
+ text-align: center;
33
+ }
34
+ .ig_addons_wrap .filter a{
35
+ margin:-5px 0 0 20px;
36
+ }
37
+ .ig_addons_wrap .filter a{
38
+ text-decoration: none;
39
+
40
+ }
41
+ </style>
42
+ <?php
43
+
44
+ if ( empty($ig_addons) ) {
45
+ $ig_addons = get_transient( 'icegram_addons_data' );
46
+ }
47
+ if ( empty($ig_addons) ) {
48
+ $ig_addons = array();
49
+ }
50
+
51
+ ?>
52
+ <div class="wrap ig_addons_wrap">
53
+ <h2>
54
+ <?php _e( 'Icegram Add-ons', 'icegram' ); ?>
55
+ </h2>
56
+ <div class="icegram_add-ons_filter wp-filter">
57
+ <ul class="filter-links">
58
+ <li data-filter="all"><a href="#" data-type="all"><?php _e( 'All', 'icegram' ); ?></a></li>
59
+ <!-- <li data-filter="installed"><a href="#" data-type="installed"><?php _e( 'Installed', 'icegram' ); ?></a></li> -->
60
+ <li data-filter="message-type"><a href="#" data-type="message-type"><?php _e( 'Message Type', 'icegram' ); ?></a></li>
61
+ <li data-filter="themes"><a href="#" data-type="themes"><?php _e( 'Themes', 'icegram' ); ?></a></li>
62
+ <li data-filter="targeting"><a href="#" data-type="targeting"><?php _e( 'Targeting', 'icegram' ); ?></a></li>
63
+ <li data-filter="reporting"><a href="#" data-type="reporting"><?php _e( 'Reporting', 'icegram' ); ?></a></li>
64
+ </ul>
65
+ </div>
66
+
67
+ <section class="cd-gallery">
68
+ <ul class="addons">
69
+ <?php
70
+ if (count($ig_addons) > 0) {
71
+ foreach ($ig_addons as $addon) {
72
+ $class = (is_plugin_active($addon->slug)) ? 'installed' : '';
73
+ ?>
74
+ <li class="addon <?php echo $class .' '. str_replace(',', ' ', $addon->category) ; ?>">
75
+ <a href="<?php echo $addon->link;?>?utm_source=inapp&utm_campaign=addons&utm_medium=store" target="_blank">
76
+ <h3><?php echo '<span style="display:inherit;">'.$addon->name.'</span>';
77
+ ?>
78
+ <?php
79
+ if( !empty( $addon->image ) ) {
80
+ echo "<img src=".$addon->image.">";
81
+ }?>
82
+ <?php
83
+ if($class !== 'installed'){
84
+ echo '<span class="addon_btn button button-small button-primary">'.__('Get This Addon','icegram').'</span>';
85
+
86
+ }else{
87
+ echo '<span class="pill">'.__('Already Installed','icegram').'</span>';
88
+ }
89
+ ?>
90
+ </h3>
91
+ <p>
92
+ <?php echo $addon->descripttion; ?>
93
+ </p>
94
+ </a>
95
+ </li>
96
+ <?php
97
+ }
98
+ } else {
99
+ echo "<p>". __( 'Sorry! No Add-ons available currently.', 'icegram') . "</p>";
100
+ }
101
+ ?>
102
+ </ul>
103
+ </section>
104
+ </div>
trunk/assets/css/admin.min.css ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ .shortcode_description.light,.shortcode_description:before{content:"\f348"}.actions,.help_tip{text-decoration:none}#postdivrich{display:none}.campaign_target_rules_panel .options_group{border-bottom:1px dashed #D3D3D3}.campaign_target_rules_panel .options_group:last-child{border-bottom-style:none}.campaign_target_rules_panel .options_group .form-field .options_header{display:inline-block;width:30%;vertical-align:top}.campaign_target_rules_panel .options_group p label input[type=checkbox],.campaign_target_rules_panel .options_group p label input[type=radio]{width:0}.campaign_target_rules_panel .options_group p label input[type=date]{width:auto;margin-left:10px}.user_roles p label input[type=checkbox],.user_roles p label input[type=radio]{margin-left:3px}.campaign_target_rules_panel .options_group .form-field #icegram_messages{width:300px;text-align:center}.empty_campaign{margin:1em;font-style:italic}.hndle em{font-weight:400;font-size:85%;margin-left:1em;color:#777}h3 .chosen-container{font-weight:500}.thickbox_edit_message{padding:0 1em;border-bottom:1px solid #D3D3D3}.messages-list-sortable{margin-top:30px}.messages_list_table{font-size:1em;width:100%;border-collapse:separate;border-spacing:3px}th.message_header{text-align:center!important}.message_title{text-align:left}.message_headline{text-align:left;padding-left:1.2em}.action_links,.message_seconds{width:75px!important;text-align:center}.message_seconds input{text-align:right}.message-row .seconds-text{width:40px!important;text-align:center}.message-sort-placeholder{background-color:#D3D3D3}.device{width:auto;line-height:5em;vertical-align:baseline}.device:after{font-family:dashicons;font-size:3em}.device input{position:relative;left:2.5em;top:1.5em}.admin_field_icon{display:inline-block;-webkit-font-smoothing:antialiased;width:18px;height:18px;font:400 18px/1 dashicons;color:#888;vertical-align:text-top;margin:0 2px}.campaign_preview{float:right;margin-right:1em!important}.shortcode_description.light{color:#777}.campaign_shortcode{display:inline-block;width:45%;color:#777}.campaign_shortcode.light{border:1px dashed #CCC;padding-left:.6%;padding-right:.2%}.campaign_shortcode.light code{color:#777}label[for=device_mobile]{margin-left:-2em}label[for=device_mobile]:after{content:"\f470"}label[for=device_tablet]:after{content:"\f471"}label[for=device_laptop]:after{content:"\f472"}.date_picker:after{content:"\f145";position:relative;top:5px;font:400 20px/1 dashicons;vertical-align:top}.date_picker{margin-left:1em}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.date-picker{max-width:15%}.campaign_target_rules_panel .options_group .messages-list .form-field .message_header{width:75px!important;text-align:right}.disable{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";filter:alpha(opacity=30);opacity:.3}.enable{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1}.message_edit:after{content:"\f464"}.message_delete:after{content:"\f158"}.actions:after{font-family:dashicons;font-size:1.4em}.actions{color:#444;padding-right:3px;cursor:pointer}.actions:hover{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70);opacity:.7}.action_links{vertical-align:middle}.message_header_label{color:#fff;text-align:center;font-size:.7em!important;margin:0!important;padding:3px 5px;cursor:auto;text-transform:uppercase}.message_header_label.unknown{color:#343232;border:1px solid #000}.message_label{float:left;width:25%;padding:0}.message_field{width:65%;display:inline-block}.message_field.message_custom_css,.message_field.message_custom_js{font-family:Consolas,Monaco,monospace;font-size:12px}.message_image_button .image-buttons-icon{margin:0 2px}.message_image_button .image-buttons-icon:before{content:"\f128"}.message_headline_button,.message_image_button{vertical-align:top!important}.message_headline_button .headline-buttons-icon{margin:2px}.message_headline_button .headline-buttons-icon:before{content:"\f130"}.help_tip:after{content:"\f223"}.help_tip{float:right;margin:4px 0;cursor:help}.chosen-container{width:65%!important}.message_row.position{height:110px}.location-selector input[type=radio]:checked+label span{background-color:#2ea2cc}.location-selector{width:128px;height:115px;position:absolute;display:block;margin-left:24.3%;background-image:url(../images/desktop.png);background-position:0 -19px}.location-selector .location{background-color:#ddd;cursor:pointer;position:absolute}.location-selector .location:hover{background-color:#ccc}.location-selector .location.bottom,.location-selector .location.middle,.location-selector .location.top{height:14%;width:14%;right:42%}.location-selector .location.top{top:13px}.location-selector .location.middle{top:30%}.location-selector .location.bottom{bottom:43px}.location-selector .location.left,.location-selector .location.right{height:14%;width:14%;margin-left:0;margin-right:0}.location-selector .location.right{right:15px}.location-selector .location.left{left:15px}.wp-editor-container{margin-left:25%}.message-setting-fields #message_title,.message-setting-fields #upload_image{width:58%}.wp-editor-container span .mceLayout{width:50%}#edit-slug-box,#ui-datepicker-div,#wp-admin-bar-view,.empty_campaign,.location-selector input[type=radio]{display:none}#the-list .message_thumbnail img{max-width:200px;max-height:100px}#icegram_messages+.chosen-container-single .chosen-search input[type=text]{width:100%!important}.message_theme+.chosen-container.chosen-container .chosen-results{max-height:30em!important}.message_theme+.chosen-container-single .chosen-single span{background-repeat:no-repeat!important;background-position:100% 50%!important}.message_theme+.chosen-container .chosen-results li{margin:0 0 2% 2%;background-position:.5em 2em!important;-webkit-background-size:95%!important;background-size:95%!important;border:2px solid #EEE!important;font-weight:700!important;display:inline-block!important;text-align:center!important;background-repeat:no-repeat!important}.message_theme+.chosen-container .chosen-results li.highlighted{color:#000!important;border:2px solid #2ea2cc!important;background-color:#EAEFFF!important}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#464646}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#464646}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#464646}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#464646}#tiptip_content,.chart-tooltip{font-size:11px;color:#fff;padding:.5em;background:#464646;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.1);box-shadow:1px 1px 3px rgba(0,0,0,.1);text-align:center;max-width:150px}#tiptip_content code,.chart-tooltip code{background:#888;padding:1px}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}input.sm_text_field,table#icegram_post_query_table,table#icegram_post_query_table tr td{padding:5px}#icegram_post_query_table label{font-weight:700}.icegram-dashicons:before{position:relative;font-family:dashicons;font-style:normal;vertical-align:middle;font-size:2em}.about-wrap .icegram-badge,.icegram-support{position:absolute;top:0}.about-wrap.icegram h2{color:#3754a8;padding-top:19px;font-weight:600}.icegram-dashicons-testimonial h4{font-size:1.5em}.icegram-badge{background:url(../images/icegram-logo-branding-64-white.png) center 24px no-repeat #3754a8;color:#FFF;font-size:12px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:24px;display:inline-block;width:150px;text-rendering:optimizeLegibility;-moz-box-shadow:0 1px 3px rgba(0,0,0,.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.icegram-support{font-size:14px;color:#000;margin:178px 0 0;height:10px;width:180px;text-rendering:optimizeLegibility;right:0;text-align:right}.icegram-contact-us{font-size:20px;line-height:1.5em;font-weight:800;margin-right:20px}.feature-section.col>div{position:relative;width:29.95%;margin-right:4.999999999%;float:left}.about-wrap [class$=col] .last-feature{margin-right:0}form[name=klawoo_subscribe]{margin-right:150px}form[name=klawoo_subscribe] input[name=email]{width:20em}.icegram-contact-us a{color:#3754a8}.ig_addons_wrap .addons{overflow:hidden}.ig_addons_wrap .addons li{float:left;margin:0 2em 2em 0!important;padding:0;vertical-align:top;width:300px}.ig_addons_wrap .addons li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f5f5f5;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.ig_addons_wrap .addons li a img{max-width:100px;max-height:100px;margin-right:-15px;margin-top:-30px;float:right}.ig_addons_wrap .addons li a h3{margin:0!important;padding:20px!important;background:#FFF;height:60px}.ig_addons_wrap .addons li a p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.ig_addons_wrap .addons li a:focus,.ig_addons_wrap .addons li a:hover{background-color:#fff}.ig_addons_wrap .addons li .ig_addon_category{margin-top:-3.5em;float:right;text-transform:capitalize;font-style:normal;margin-right:1em;font-size:80%}.ig_addons_wrap .addons li .ig_addon_category span{margin-left:1.2em;padding:2px 3px;background-color:#DEDEDE;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em}.ig_addons_wrap .addons li .ig_addon_category span.free{background-color:#C3D3FF;color:#3754a8}.ig_addons_wrap .addons .addon_btn{margin-top:25px}.ig_addons_wrap .addons .pill{font-size:12px;margin-top:30px;position:absolute;padding:.15em .7em;background-color:#aaa;color:#FFF;box-shadow:0 0 3px 0 rgba(0,0,0,.2)}#popup_container{width:550px;background-color:#FFF;margin:0 auto;padding:.5em 1em 1em}#popup_container input[value=ig_vertical]{margin-left:3%}#popup_container select{width:30%}#popup_container #embed_howto_link{float:right;font-size:.8em;font-weight:400}.campaign_target_rules_panel .messages_list_table p.inline{display:block;margin:1em 0}.campaign_target_rules_panel .form-field .delete-url:before{font-family:dashicons;content:"\f182";cursor:pointer}.campaign_target_rules_panel .form-field .url_input_field{width:65%!important}.campaign_target_rules_panel #valid-field{margin-left:92%}.campaign_target_rules_panel #valid-field.error{font-family:dashicons;font-size:1.5em;color:red;vertical-align:middle;display:inline-block;-webkit-font-smoothing:antialiased;cursor:help}.campaign_target_rules_panel #valid-field.error:after{content:"\f223"}.campaign_target_rules_panel #add-url-icon:after{font-family:dashicons;content:"\f132";vertical-align:middle}.message_colors_options_container p{margin-top:.3em!important;margin-bottom:.3em!important}.message_colors_options_container p span.message_label{font-size:12px;margin-top:2px}.message-setting-fields .chosen-container-single .chosen-single{z-index:initial!important}.message-setting-fields .chosen-container-single.chosen-single div b{background:url(../images/chosen-sprite.png) 0 2px no-repeat!important}.ig_get_more,.message_animation+.chosen-container .chosen-results li.ig_get_more,.message_theme+.chosen-container .chosen-results li.ig_get_more{height:1.5em!important;background:rgba(255,231,180,.47)!important;border:1px dashed #b40000!important;line-height:1.5em;color:maroon!important;border-radius:.5em;width:92%!important}.message_animation+.chosen-container .chosen-results li.ig_get_more{height:1em!important;line-height:1em;margin-bottom:.1em;text-align:center}.message_animation+.chosen-container .chosen-results li.ig_get_more:after,.message_theme+.chosen-container .chosen-results li.ig_get_more:after{content:" \2192"}.message_animation+.chosen-container .chosen-results li.ig_get_more:focus,.message_animation+.chosen-container .chosen-results li.ig_get_more:hover,.message_theme+.chosen-container .chosen-results li.ig_get_more:focus,.message_theme+.chosen-container .chosen-results li.ig_get_more:hover{box-shadow:inset 0 0 1.5em rgba(253,214,131,.62)}.message_form_options{width:75%;margin-left:25%}.message_form_options label.message_label{display:none}.message_form_options textarea{resize:none;width:86%}.message_form_options p>div.form_radio_group{width:86%}.message_form_options span.message_label{width:100%}.message_form_options .form_inline_shortcode{margin-left:0;margin-top:1em;position:relative;width:inherit}.message_form_html_original{font-family:Consolas,Monaco,monospace;font-size:.8em}.form_radio_group .location{display:inline-block;width:97px;height:94px;padding:3px 3px 0;margin-right:.8em;border:1px solid transparent}.form_radio_group .location label{background:url(../images/from_layouts.png) no-repeat;display:block;width:95px;height:100px;border:1px solid transparent}.form_radio_group .location:hover{border:1px solid #2EA2CC}#message_form_style+.chosen-container-single .chosen-single{height:6em!important}#message_form_style+.chosen-container-single .chosen-single span{background-size:9em!important;line-height:6em!important;background-repeat:no-repeat;background-position:100% 50%!important}#message_form_style+.chosen-container .chosen-results li{width:43%!important;height:10em!important;margin:0 0 2% 2%;-webkit-background-size:95%!important;background-size:100%!important;border:2px solid #EEE!important;font-weight:700!important;display:inline-block!important;text-align:center!important;background-repeat:no-repeat!important;background-position:0 100%!important;color:transparent}#message_form_style+.chosen-container .chosen-results li.highlighted{color:transparent!important;border:2px solid #2ea2cc!important;background-color:#EAEFFF!important}.message_form_options .chosen-container{width:86%!important}.feature-section.col.two-col>div{width:45.95%}.feature-section.col img{width:150px}.feature-section.col p{margin-bottom:1.5em}.about-wrap.icegram h2{margin-bottom:.5em}.about-wrap .feature-section h4{margin-top:.4em}.about-header .about-text{margin-top:0;margin-bottom:1.5em}.changelog .about-text{margin-bottom:0;margin-top:1.5em}.about-wrap .icegram-badge{right:1.3em;color:#3754a8;background-color:transparent;padding-top:100px;box-shadow:none;-webkit-box-shadow:none;background-image:url(../images/icegram-logo-branding-64.png)}.about-header .wrap{background-color:#fff;border-top:1px dotted #ddd}.about-header .wrap table{margin-top:.5em}.about-header th{font-size:1.1em;color:inherit;width:170px}.about-header{background-color:#FFF;padding:1em 1em .5em;-webkit-box-shadow:0 0 7px 0 rgba(0,0,0,.2);box-shadow:0 0 7px 0 rgba(0,0,0,.2)}.icegram-support{padding-right:1em;margin-top:140px}.icegram-actions a,.icegram-actions a:active{vertical-align:middle!important;font-size:1.15em;color:#3754a8}.icegram-actions .button-primary{text-shadow:none;font-size:1.15em!important;line-height:1em!important;height:2.5em!important;padding:.75em 1.5em!important;background:#038703!important;border-color:#038703!important}.icegram-actions .button-primary:active,.icegram-actions .button-primary:focus,.icegram-actions .button-primary:hover,.icegram-actions .button-primary:visited{color:#fff;background:#038703!important;-webkit-box-shadow:inset 0 2px 0 #038703!important;box-shadow:inset 0 2px 0 #038703!important}.icegram-dashicons:before{margin-right:.1em}/*! jQuery UI - v1.11.0 - 2014-07-18
2
+ * http://jqueryui.com
3
+ * Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
+ * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
+
7
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("../images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("../images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("../images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("../images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("../images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("../images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("../images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("../images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("../images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("../images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("../images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("../images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("../images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("../images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("../images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}/* Chosen v1.1.0 | (c) 2011-2013 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
8
+
9
+ .chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;*display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:23px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(../images/chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(../images/chosen-sprite.png) no-repeat 100% -20px;background:url(../images/chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:5px;height:15px;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;border:1px solid #aaa;border-radius:3px;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:transparent}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single-nosearch .chosen-search,.chosen-rtl .chosen-drop{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(../images/chosen-sprite.png) no-repeat -30px -20px;background:url(../images/chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-rtl .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-container-single .chosen-search input[type=text],.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
trunk/assets/css/frontend.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ig_powered_by,.ig_powered_by a,a.ig_powered_by{color:#A8A8A8!important;text-decoration:none}.icegram .ig_button,.icegram input[type=submit],.icegram input[type=button]{border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.ig_message p{margin:0;padding:0;line-height:inherit;font-size:inherit}.icegram .ig_clear_fix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.ig_form_response_text{margin:.5em auto;padding:.5em;text-align:center}.ig_form_container{display:none;position:relative;height:100%;z-index:10;padding:.7em 1em;text-align:left;line-height:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ig_form_container form{margin:0;padding:0;font-size:100%}.ig_form_container select,.ig_form_container textarea{height:2.25em}.ig_form_container input[type=checkbox]{height:1.25em!important}.ig_form_container .ig_form_header{width:98%;text-align:left}.ig_form_container .ig_form_footer{font-size:.8em;width:98%;clear:both;text-align:left}.ig_form_container .ig_form_els{margin:.3em 1% .3em 0}.ig_form_left .ig_form_container.layout_left{display:block;padding:1em .7em}.ig_form_right .ig_form_container.layout_right{display:block;padding:1em .7em;float:left}.ig_form_bottom .ig_form_container.layout_bottom{display:block;width:100%;height:auto}.ig_form_inline .ig_form_container.layout_inline{display:block;width:100%;padding:.5em;background-color:transparent!important;color:inherit!important}.ig_form_left .ig_form_container.layout_left .ig_form_els,.ig_form_right .ig_form_container.layout_right .ig_form_els{margin:.5em auto}.ig_form_bottom .ig_form_container.layout_bottom .ig_form_els,.ig_form_inline .ig_form_container.layout_inline .ig_form_els{display:inline-block;float:left}.ig_form_bottom .ig_form_container.layout_bottom .ig_full .ig_form_els,.ig_form_inline .ig_form_container.layout_inline .ig_full .ig_form_els{width:99%}.ig_form_bottom .ig_form_container.layout_bottom .ig_half .ig_form_els,.ig_form_inline .ig_form_container.layout_inline .ig_half .ig_form_els{width:49%}.ig_form_bottom .ig_form_container.layout_bottom .ig_third .ig_form_els,.ig_form_inline .ig_form_container.layout_inline .ig_third .ig_form_els{width:32%}.ig_form_bottom .ig_form_container.layout_bottom .ig_quater .ig_form_els,.ig_form_inline .ig_form_container.layout_inline .ig_quater .ig_form_els{width:24%}.ig_form_container .ig_form_els input{height:2.25em;line-height:2.2em}.ig_form_container .ig_form_els input,.ig_form_container .ig_form_els label,.ig_form_container .ig_form_els select,.ig_form_container .ig_form_els textarea{width:99%;font-size:1em;text-align:left;display:block;margin:0 auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ig_form_container .ig_form_els select,.ig_form_container .ig_form_els textarea{padding-left:.5em}.ig_form_container .ig_form_els textarea{padding-top:.5em}.ig_form_container .ig_form_els.ig_form_el_radio{height:2.25em!important;line-height:2.2em}.ig_form_container .ig_form_els.ig_form_el_radio input{width:auto!important;display:inline;margin:0 .3em;height:1em!important}.ig_form_bottom .ig_form_container.layout_bottom .ig_quater .ig_form_els.ig_form_el_radio,.ig_form_inline .ig_form_container.layout_inline .ig_quater .ig_form_els.ig_form_el_radio{display:inline}.ig_form_bottom .ig_form_container.layout_bottom .ig_quater .ig_form_els.ig_form_el_radio label,.ig_form_inline .ig_form_container.layout_inline .ig_quater .ig_form_els.ig_form_el_radio label{width:auto;display:inline}.ig_form_left .ig_form_container.layout_left .ig_button_label,.ig_form_right .ig_form_container.layout_right .ig_button_label{display:none}.ig_form_bottom .ig_form_container.layout_bottom .ig_button_label,.ig_form_inline .ig_form_container.layout_inline .ig_button_label{display:block;visibility:hidden;opacity:0}.ig_form_bottom .ig_form_container.layout_bottom .ig_button,.ig_form_bottom .ig_form_container.layout_bottom input[type=submit],.ig_form_bottom .ig_form_container.layout_bottom input[type=button],.ig_form_inline .ig_form_container.layout_inline .ig_button,.ig_form_inline .ig_form_container.layout_inline input[type=submit],.ig_form_inline .ig_form_container.layout_inline input[type=button],.ig_form_left .ig_form_container.layout_left .ig_button,.ig_form_left .ig_form_container.layout_left input[type=submit],.ig_form_left .ig_form_container.layout_left input[type=button],.ig_form_right .ig_form_container.layout_right .ig_button,.ig_form_right .ig_form_container.layout_right input[type=submit],.ig_form_right .ig_form_container.layout_right input[type=button]{width:99%;font-size:1em;float:none;margin:0 auto!important;text-align:center;display:block;-ms-transform:inherit;-webkit-transform:inherit;transform:inherit;opacity:1}.ig_form_inline.ig_form_style_1 .ig_form_container:before,.ig_form_inline.ig_form_style_4 .ig_form_container:before,.ig_form_style_0 .ig_form_container:before{display:none}.ig_form_container:before{content:'';padding:0;margin:0;position:absolute;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ig_form_style_0 .ig_form_container .ig_form_els input{height:2.25em;line-height:2.2em;padding:inherit;padding-left:.5em}.ig_form_style_0 .ig_form_container .ig_form_els .ig_button,.ig_form_style_0 .ig_form_container .ig_form_els .ig_button:focus,.ig_form_style_0 .ig_form_container .ig_form_els .ig_button:hover{height:2.25em;line-height:2.2em;padding:inherit}.ig_form_style_1 .ig_form_container:before{border-width:0;border-style:solid;border-color:#000!important;opacity:.3;top:0}.ig_form_left.ig_form_style_1 .ig_form_container:before{right:0;height:inherit;border-left-width:.22em}.ig_form_right.ig_form_style_1 .ig_form_container:before{left:0;height:inherit;border-left-width:.22em}.ig_form_bottom.ig_form_style_1 .ig_form_container:before{left:0;width:100%;border-top-width:.22em}.ig_form_style_1 .ig_form_container .ig_form_els input:not(.ig_button),.ig_form_style_5 .ig_form_container .ig_form_els input:not(.ig_button),.ig_form_style_6 .ig_form_container .ig_form_els input:not(.ig_button){border:1px solid #ccc}.ig_form_style_1 .ig_form_container .ig_form_els input,.ig_form_style_5 .ig_form_container .ig_form_els input,.ig_form_style_6 .ig_form_container .ig_form_els input{height:2.25em;line-height:2.2em;-webkit-border-radius:.2em;-moz-border-radius:.2em;border-radius:.2em;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;padding:inherit;padding-left:.5em}.ig_form_style_1 .ig_form_container .ig_form_els input:focus:not(.ig_button),.ig_form_style_1 .ig_form_container .ig_form_els input:hover:not(.ig_button),.ig_form_style_5 .ig_form_container .ig_form_els input:focus:not(.ig_button),.ig_form_style_5 .ig_form_container .ig_form_els input:hover:not(.ig_button),.ig_form_style_6 .ig_form_container .ig_form_els input:focus:not(.ig_button),.ig_form_style_6 .ig_form_container .ig_form_els input:hover:not(.ig_button){border-color:#999}.ig_form_style_1 .ig_form_container .ig_form_els input:focus,.ig_form_style_1 .ig_form_container .ig_form_els input:hover,.ig_form_style_5 .ig_form_container .ig_form_els input:focus,.ig_form_style_5 .ig_form_container .ig_form_els input:hover,.ig_form_style_6 .ig_form_container .ig_form_els input:focus,.ig_form_style_6 .ig_form_container .ig_form_els input:hover{height:2.25em;line-height:2.2em;padding:inherit;padding-left:.5em}.ig_form_style_1 .ig_form_container .ig_form_els .ig_button,.ig_form_style_1 .ig_form_container .ig_form_els .ig_button:focus,.ig_form_style_1 .ig_form_container .ig_form_els .ig_button:hover,.ig_form_style_5 .ig_form_container .ig_form_els .ig_button,.ig_form_style_5 .ig_form_container .ig_form_els .ig_button:focus,.ig_form_style_5 .ig_form_container .ig_form_els .ig_button:hover,.ig_form_style_6 .ig_form_container .ig_form_els .ig_button,.ig_form_style_6 .ig_form_container .ig_form_els .ig_button:focus,.ig_form_style_6 .ig_form_container .ig_form_els .ig_button:hover{height:2.25em;line-height:2.2em;padding:inherit}.ig_form_bottom.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els,.ig_form_inline.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els{margin-right:0;margin-left:0}.ig_form_bottom.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els .ig_button,.ig_form_inline.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els .ig_button,.ig_form_left.ig_form_style_2 .ig_form_container.layout_left .ig_form_els .ig_button,.ig_form_right.ig_form_style_2 .ig_form_container.layout_right .ig_form_els .ig_button{padding:inherit}.ig_form_bottom.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_first label,.ig_form_inline.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first label,.ig_form_left.ig_form_style_2 .ig_form_container.layout_left .ig_form_els input,.ig_form_left.ig_form_style_2 .ig_form_container.layout_left .ig_form_els label,.ig_form_right.ig_form_style_2 .ig_form_container.layout_right .ig_form_els input,.ig_form_right.ig_form_style_2 .ig_form_container.layout_right .ig_form_els label{padding-left:1em}.ig_form_left.ig_form_style_2 .ig_form_container.layout_left .ig_form_els .ig_button,.ig_form_left.ig_form_style_2 .ig_form_container.layout_left .ig_form_els input,.ig_form_right.ig_form_style_2 .ig_form_container.layout_right .ig_form_els .ig_button,.ig_form_right.ig_form_style_2 .ig_form_container.layout_right .ig_form_els input{height:2.25em;line-height:2.2em;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}.ig_form_bottom.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els .ig_button,.ig_form_bottom.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els input,.ig_form_inline.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els .ig_button,.ig_form_inline.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els input{height:2.25em;line-height:2.2em;width:100%;border-width:2px 0 2px 2px}.ig_form_bottom.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_first input,.ig_form_inline.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first input{-webkit-border-radius:2em 0 0 2em;-moz-border-radius:2em 0 0 2em;border-radius:2em 0 0 2em;padding-left:1em}.ig_form_bottom.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_last input,.ig_form_inline.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_last input{-webkit-border-radius:0 2em 2em 0;-moz-border-radius:0 2em 2em 0;border-radius:0 2em 2em 0}.ig_form_style_3 .ig_form_container .ig_form_els input:not(.ig_button){border:1px solid rgba(255,255,255,.3)}.ig_form_style_3 .ig_form_container .ig_form_els input{height:2.25em;line-height:2.2em;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;padding:inherit;padding-left:.5em;background-color:rgba(0,0,0,.3)}.ig_form_style_3 .ig_form_container .ig_form_els input:focus:not(.ig_button),.ig_form_style_3 .ig_form_container .ig_form_els input:hover:not(.ig_button){border-color:rgba(255,255,255,.6)}.ig_form_style_3 .ig_form_container .ig_form_els input:focus,.ig_form_style_3 .ig_form_container .ig_form_els input:hover{height:2.25em;line-height:2.2em;padding:inherit;padding-left:.5em}.ig_form_style_3 .ig_form_container .ig_form_els .ig_button,.ig_form_style_3 .ig_form_container .ig_form_els .ig_button:focus,.ig_form_style_3 .ig_form_container .ig_form_els .ig_button:hover{height:2.25em;line-height:2.2em;padding:inherit}.ig_form_style_3 .ig_form_container .ig_form_els ::-webkit-input-placeholder{color:rgba(255,255,255,.5)}.ig_form_style_3 .ig_form_container .ig_form_els :-moz-placeholder{color:rgba(255,255,255,.5);opacity:1}.ig_form_style_3 .ig_form_container .ig_form_els ::-moz-placeholder{color:rgba(255,255,255,.5);opacity:1}.ig_form_style_3 .ig_form_container .ig_form_els :-ms-input-placeholder{color:rgba(255,255,255,.5)}.ig_form_bottom.ig_form_style_4 .ig_content{margin-bottom:1.3em}.ig_form_style_4 .ig_form_container:before{border-style:solid;top:-1em;left:-1em;width:100%;height:100%;border-width:1em;z-index:-1;-moz-box-shadow:0 0 15px rgba(0,0,0,.7);-webkit-box-shadow:0 0 15px rgba(0,0,0,.7);box-shadow:0 0 15px rgba(0,0,0,.7)}.ig_form_right.ig_form_style_4 .ig_form_container:before{left:inherit;right:-1em}.ig_form_style_4 .ig_form_container .ig_form_els input{height:2.25em;line-height:2.2em;padding:inherit;padding-left:.5em}.ig_form_style_4 .ig_form_container .ig_form_els .ig_button,.ig_form_style_4 .ig_form_container .ig_form_els .ig_button:focus,.ig_form_style_4 .ig_form_container .ig_form_els .ig_button:hover{height:2.25em;line-height:2.2em;padding:inherit}.ig_form_bottom.ig_form_style_5 .ig_form_container.layout_bottom .ig_form_els_first,.ig_form_inline.ig_form_style_5 .ig_form_container.layout_inline .ig_form_els_first{width:68%}.ig_form_bottom.ig_form_style_5 .ig_form_container.layout_bottom .ig_form_els_last,.ig_form_inline.ig_form_style_5 .ig_form_container.layout_inline .ig_form_els_last{width:30%}.ig_form_style_6 .ig_form_container.layout_bottom .ig_full .ig_form_els,.ig_form_style_6 .ig_form_container.layout_bottom .ig_half .ig_form_els,.ig_form_style_6 .ig_form_container.layout_bottom .ig_quater .ig_form_els,.ig_form_style_6 .ig_form_container.layout_bottom .ig_third .ig_form_els,.ig_form_style_6 .ig_form_container.layout_inline .ig_full .ig_form_els,.ig_form_style_6 .ig_form_container.layout_inline .ig_half .ig_form_els,.ig_form_style_6 .ig_form_container.layout_inline .ig_quater .ig_form_els,.ig_form_style_6 .ig_form_container.layout_inline .ig_third .ig_form_els{width:99%;margin:.5em auto 0}.ig_anim_appear_in{-webkit-animation:IgFadeIn .9s;-moz-animation:IgFadeIn .9s;animation:IgFadeIn .9s;visibility:visible}@-webkit-keyframes IgFadeIn{0%{opacity:0}50%{opacity:.5}100%{opacity:1}}@-moz-keyframes IgFadeIn{0%{opacity:0}50%{opacity:.5}100%{opacity:1}}@keyframes IgFadeIn{0%{opacity:0}50%{opacity:.5}100%{opacity:1}}.ig_anim_appear_out{-webkit-animation:IgFadeOut .9s;-moz-animation:IgFadeOut .9s;animation:IgFadeOut .9s}@-webkit-keyframes IgFadeOut{0%{opacity:1}99.5%{opacity:.5}100%{opacity:1}}@-moz-keyframes IgFadeOut{0%{opacity:1}99.5%{opacity:.5}100%{opacity:1}}@keyframes IgFadeOut{0%{opacity:1}99.5%{opacity:.5}100%{opacity:1}}.ig_left.ig_anim_slide_in{animation-name:IgSlideInLeft;-moz-animation-name:IgSlideInLeft;-webkit-animation-name:IgSlideInLeft;animation-duration:.5s;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease}@-webkit-keyframes IgSlideInLeft{0%{-webkit-transform:translate3d(-100%,0,0)}100%{-webkit-transform:none}}@-moz-keyframes IgSlideInLeft{0%{-moz-transform:translate3d(-100%,0,0)}100%{-moz-transform:none}}@keyframes IgSlideInLeft{0%{transform:translate3d(-100%,0,0)}100%{transform:none}}.ig_left.ig_anim_slide_out{animation-name:IgFadeOutLeft;-moz-animation-name:IgFadeOutLeft;-webkit-animation-name:IgFadeOutLeft;animation-duration:.9s;-moz-animation-duration:.9s;-webkit-animation-duration:.9s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes IgFadeOutLeft{0%{opacity:1;-webkit-transform:translate3d(0,0,0)}99.5%{opacity:0;-webkit-transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes IgFadeOutLeft{0%{opacity:1;-moz-transform:translate3d(0,0,0)}99.5%{opacity:0;-moz-transform:translate3d(-100%,0,0)}100%{opacity:1;-moz-transform:translate3d(-100%,0,0)}}@keyframes IgFadeOutLeft{0%{opacity:1;transform:translate3d(0,0,0)}99.5%{opacity:0;transform:translate3d(-100%,0,0)}100%{opacity:1;transform:translate3d(-100%,0,0)}}.ig_right.ig_anim_slide_in{animation-name:IgSlideInRight;-moz-animation-name:IgSlideInRight;-webkit-animation-name:IgSlideInRight;animation-duration:.5s;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease}@-webkit-keyframes IgSlideInRight{0%{-webkit-transform:translate3d(100%,0,0)}100%{-webkit-transform:none}}@-moz-keyframes IgSlideInRight{0%{-moz-transform:translate3d(100%,0,0)}100%{-moz-transform:none}}@keyframes IgSlideInRight{0%{transform:translate3d(100%,0,0)}100%{transform:none}}.ig_right.ig_anim_slide_out{animation-name:IgFadeOutRight;-moz-animation-name:IgFadeOutRight;-webkit-animation-name:IgFadeOutRight;animation-duration:.9s;-moz-animation-duration:.9s;-webkit-animation-duration:.9s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes IgFadeOutRight{0%{opacity:1;-webkit-transform:translate3d(0,0,0)}99.5%{opacity:0;-webkit-transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes IgFadeOutRight{0%{opacity:1;-moz-transform:translate3d(0,0,0)}99.5%{opacity:0;-moz-transform:translate3d(100%,0,0)}100%{opacity:1;-moz-transform:translate3d(100%,0,0)}}@keyframes IgFadeOutRight{0%{opacity:1;transform:translate3d(0,0,0)}99.5%{opacity:0;transform:translate3d(100%,0,0)}100%{opacity:1;transform:translate3d(100%,0,0)}}.ig_bottom .ig_anim_slide_in,.ig_bottom.ig_anim_slide_in{animation-name:IgSlideInUp;-moz-animation-name:IgSlideInUp;-webkit-animation-name:IgSlideInUp;animation-duration:.5s;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease}@-webkit-keyframes IgSlideInUp{0%{-webkit-transform:translate3d(0,100%,0)}100%{-webkit-transform:none}}@-moz-keyframes IgSlideInUp{0%{-moz-transform:translate3d(0,100%,0)}100%{-moz-transform:none}}@keyframes IgSlideInUp{0%{transform:translate3d(0,100%,0)}100%{transform:none}}.ig_bottom .ig_anim_slide_out,.ig_bottom.ig_anim_slide_out{animation-name:IgFadeOutDown;-moz-animation-name:IgFadeOutDown;-webkit-animation-name:IgFadeOutDown;animation-duration:.9s;-moz-animation-duration:.9s;-webkit-animation-duration:.9s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes IgFadeOutDown{0%{opacity:1;-webkit-transform:translate3d(0,0,0)}99.5%{opacity:0;-webkit-transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:translate3d(0,100%,0)}}@-moz-keyframes IgFadeOutDown{0%{opacity:1;-moz-transform:translate3d(0,0,0)}99.5%{opacity:0;-moz-transform:translate3d(0,100%,0)}100%{opacity:1;-moz-transform:translate3d(0,100%,0)}}@keyframes IgFadeOutDown{0%{opacity:1;transform:translate3d(0,0,0)}99.5%{opacity:0;transform:translate3d(0,100%,0)}100%{opacity:1;transform:translate3d(0,100%,0)}}.ig_anim_slide_in,.ig_top .ig_anim_slide_in,.ig_top.ig_anim_slide_in{animation-name:IgSlideInDown;-moz-animation-name:IgSlideInDown;-webkit-animation-name:IgSlideInDown;animation-duration:.5s;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease}@-webkit-keyframes IgSlideInDown{0%{-webkit-transform:translate3d(0,-100%,0)}100%{-webkit-transform:none}}@-moz-keyframes IgSlideInDown{0%{-moz-transform:translate3d(0,-100%,0)}100%{-moz-transform:none}}@keyframes IgSlideInDown{0%{transform:translate3d(0,-100%,0)}100%{transform:none}}.ig_anim_slide_out,.ig_top .ig_anim_slide_out,.ig_top.ig_anim_slide_out{animation-name:IgFadeOutUp;-moz-animation-name:IgFadeOutUp;-webkit-animation-name:IgFadeOutUp;animation-duration:.9s;-moz-animation-duration:.9s;-webkit-animation-duration:.9s;animation-timing-function:ease;-moz-animation-timing-function:ease;-webkit-animation-timing-function:ease;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes IgFadeOutUp{0%{opacity:1;-webkit-transform:translate3d(0,0,0)}99.5%{opacity:0;-webkit-transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:translate3d(0,-100%,0)}}@-moz-keyframes IgFadeOutUp{0%{opacity:1;-moz-transform:translate3d(0,0,0)}99.5%{opacity:0;-moz-transform:translate3d(0,-100%,0)}100%{opacity:1;-moz-transform:translate3d(0,-100%,0)}}@keyframes IgFadeOutUp{0%{opacity:1;transform:translate3d(0,0,0)}99.5%{opacity:0;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,-100%,0)}}
trunk/assets/images/animated-overlay.gif ADDED
Binary file
trunk/assets/images/arrows-sprite.png ADDED
Binary file
trunk/assets/images/chosen-sprite.png ADDED
Binary file
trunk/assets/images/clear-footer.png ADDED
Binary file
trunk/assets/images/clear-header.png ADDED
Binary file
trunk/assets/images/clear-option.png ADDED
Binary file
trunk/assets/images/desktop.png ADDED
Binary file
trunk/assets/images/from_layouts.png ADDED
Binary file
trunk/assets/images/icegram-logo-branding-18-white.png ADDED
Binary file
trunk/assets/images/icegram-logo-branding-64-grey.png ADDED
Binary file
trunk/assets/images/icegram-logo-branding-64-white.png ADDED
Binary file
trunk/assets/images/icegram-logo-branding-64.png ADDED
Binary file
trunk/assets/images/popup-amaze-bg.jpg ADDED
Binary file
trunk/assets/images/popup-close.png ADDED
Binary file
trunk/assets/images/sketch-action-bar.png ADDED
Binary file
trunk/assets/images/sketch-messenger.png ADDED
Binary file
trunk/assets/images/sketch-multiple-sequence.png ADDED
Binary file
trunk/assets/images/sketch-popup.png ADDED
Binary file
trunk/assets/images/sketch-rules.png ADDED
Binary file
trunk/assets/images/sketch-toast-notification.png ADDED
Binary file
trunk/assets/images/social-img.png ADDED
Binary file
trunk/assets/images/sprite_1.png ADDED
Binary file
trunk/assets/images/stand-out.png ADDED
Binary file
trunk/assets/images/style_0.png ADDED
Binary file
trunk/assets/images/style_1.png ADDED
Binary file
trunk/assets/images/style_2.png ADDED
Binary file
trunk/assets/images/style_3.png ADDED
Binary file
trunk/assets/images/style_4.png ADDED
Binary file
trunk/assets/images/talk-close.png ADDED
Binary file
trunk/assets/images/talk-footer-1.png ADDED
Binary file
trunk/assets/images/talk-header-1.png ADDED
Binary file
trunk/assets/images/talk-header-2.png ADDED
Binary file
trunk/assets/images/toast-glow.png ADDED
Binary file
trunk/assets/images/ui-bg_flat_0_aaaaaa_40x100.png ADDED
Binary file
trunk/assets/images/ui-bg_flat_75_ffffff_40x100.png ADDED
Binary file
trunk/assets/images/ui-bg_glass_55_fbf9ee_1x400.png ADDED
Binary file
trunk/assets/images/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
trunk/assets/images/ui-bg_glass_75_dadada_1x400.png ADDED
Binary file
trunk/assets/images/ui-bg_glass_75_e6e6e6_1x400.png ADDED
Binary file
trunk/assets/images/ui-bg_glass_95_fef1ec_1x400.png ADDED
Binary file
trunk/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png ADDED
Binary file
trunk/assets/images/ui-icons_222222_256x240.png ADDED
Binary file
trunk/assets/images/ui-icons_2e83ff_256x240.png ADDED
Binary file
trunk/assets/images/ui-icons_454545_256x240.png ADDED
Binary file
trunk/assets/images/ui-icons_888888_256x240.png ADDED
Binary file
trunk/assets/images/ui-icons_cd0a0a_256x240.png ADDED
Binary file
trunk/assets/js/admin.min.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Chosen v1.1.0 | (c) 2011-2013 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
2
+ !function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),children:0,disabled:a.disabled}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&amp;"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,this.outerHTML(c)):"":""},AbstractChosen.prototype.result_add_group=function(a){var b;return a.search_match||a.group_match?a.active_options>0?(b=document.createElement("li"),b.className="group-result",b.innerHTML=a.search_text,this.outerHTML(b)):"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(this.no_results_clear(),e=0,g=this.get_search_text(),a=g.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.search_contains?"":"^",c=new RegExp(d+a,"i"),j=new RegExp(a,"i"),m=this.results_data,k=0,l=m.length;l>k;k++)b=m[k],b.search_match=!1,f=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(f=this.results_data[b.group_array_index],0===f.active_options&&f.search_match&&(e+=1),f.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.html,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(e+=1),b.search_match?(g.length&&(h=b.search_text.search(j),i=b.search_text.substr(0,h+g.length)+"</em>"+b.search_text.substr(h+g.length),b.search_text=i.substr(0,h)+"<em>"+i.substr(h)),null!=f&&(f.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>e&&g.length?(this.update_results_content(""),this.no_results(g)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(){var a=this;return setTimeout(function(){return a.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d?d.destroy():d||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),this.is_multiple?this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'):this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+b.html+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}.call(this);;// Generated by CoffeeScript 1.3.1
3
+ (function(e){return e.fn.ajaxChosen=function(t,n){var r,i,s,o;t==null&&(t={});n==null&&(n=function(){});i={minTermLength:3,afterTypeDelay:500,jsonTermKey:"term"};o=this;r=null;s=e.extend({},i,t);this.chosen();return this.each(function(){return e(this).next(".chosen-container").find(".search-field > input, .chosen-search > input").bind("keyup",function(){var t,i,u,a;a=e.trim(e(this).attr("value"));i=a.length<s.minTermLength?"Keep typing...":"Looking for '"+a+"'";o.next(".chosen-container").find(".no-results").text(i);if(a===e(this).data("prevVal"))return!1;e(this).data("prevVal",a);this.timer&&clearTimeout(this.timer);if(a.length<s.minTermLength)return!1;t=e(this);s.data==null&&(s.data={});s.data[s.jsonTermKey]=a;s.dataCallback!=null&&(s.data=s.dataCallback(s.data));u=s.success;s.success=function(r){var i,s;if(r==null)return;s=[];o.find("option").each(function(){return e(this).is(":selected")?s.push(e(this).val()+"-"+e(this).text()):e(this).remove()});i=n(r);e.each(i,function(t,n){if(e.inArray(t+"-"+n,s)===-1)return e("<option />").attr("value",t).html(n).appendTo(o)});o.trigger("chosen:updated");u!=null&&u(r);t.attr("value",a);return t.css("width","auto")};return this.timer=setTimeout(function(){r&&r.abort();return r=e.ajax(s)},s.afterTypeDelay)})})}})(jQuery);;jQuery(function(){function a(a){var b=jQuery(a).find(".message_type option:selected").val();"unknown"!==b&&jQuery("#campaign_data").find(".message_header_label").hasClass("unknown")?jQuery("#campaign_data").find(".message_header_label").removeClass("unknown"):"unknown"===b&&(jQuery("#campaign_data").find(".message_header_label").removeClass().addClass("unknown").addClass("message_header_label"),jQuery("#campaign_data").find(".message_header_label").text("unknown"));var c=jQuery(a).find(".message_row.ig_"+b).find(".message_theme").val(),d=jQuery(a).find(".message_row.ig_"+b).find("#message_form_style").val(),e=jQuery(a).find("#message_theme_ig_"+b).find("."+c).attr("style"),f=jQuery(a).find("#message_form_style").find("."+d).attr("style");jQuery(a).find(".message_row, .location").hide(),jQuery(a).find(".ig_"+b).show(),jQuery(a).find(".message_row.ig_"+b).find(".message_theme").next().find(".chosen-single span").attr("style",e),jQuery(a).find(".message_row.ig_"+b).find(".message_form_style").next().find(".chosen-single span").attr("style",f).text(function(){return jQuery(this).text().substr(0,jQuery(this).text().indexOf(" "))||jQuery(this).text()}),"block"!==jQuery(a).find(".message_body").parent().css("display")?jQuery(a).find(".message_body").parent().next(".wp-editor-wrap").hide():jQuery(a).find(".message_body").parent().next(".wp-editor-wrap").show(),jQuery(a).find(".message_form_layout:checked").is(":visible")||jQuery(a).find(".message_form_layout:visible").first().prop("checked",!0),jQuery(".message_form_layout").change()}function b(a,c,d){var e=Math.floor(Math.random()*(d-c+1))+c;return e==a?b(e,c,d):e}function c(){var a='<span><label class="options_header"><span id="valid-field"> </span></label> <input type="text" class="url_input_field" data-option="local_url" name="campaign_target_rules[local_urls][]" value="'+e+'*"/><span class="delete-url"></span></span>';return a}function d(){0==jQuery(".message-row").length?jQuery(".empty_campaign").show():jQuery(".empty_campaign").hide()}var e=icegram_writepanel_params.home_url;jQuery("#campaign_data").find("h3.hndle").hide(),jQuery(".target_rules_desc").appendTo("#campaign_target_rules h3.hndle span"),jQuery(document).ready(function(){var c=window.send_to_editor;jQuery(".color-field").wpColorPicker().each(function(a){var b=jQuery(this).data("color-label")||"";""!==b&&jQuery(this).closest(".wp-picker-container").find("a.wp-color-result").attr("title",b)}),jQuery("#campaign_data, #message-settings").on("change",".show_color_options",function(){jQuery(this).closest("p").next(".message_colors_options_container").toggle(!this.checked)}).change(),d(),jQuery(".message_edit:first").trigger("click"),this_data=jQuery(".message_type option:selected").closest(".message-setting-fields");for(var e=0;e<this_data.length;e++)a(this_data[e]);jQuery(".inside").on("change",".message_type",function(b){var c=jQuery(b.target).parents(".message-setting-fields");a(c)}),jQuery("#campaign_data, #message-settings").on("change",".message_theme",function(a){var b=jQuery(a.target).parents(".message-setting-fields"),c=jQuery(b).find(".message_type").val(),d=jQuery(b).find(".message_row.ig_"+c).find(".message_theme").val(),e=jQuery(b).find("#message_theme_ig_"+c).find("."+d).attr("style");jQuery(b).find(".message_row.ig_"+c).find(".message_theme").next().find(".chosen-single span").attr("style",e)}),jQuery("#campaign_data, #message-settings").on("change",".rainmaker_form_list",function(a){"null"!==(jQuery(a.target).val()||"null")&&jQuery(a.target).parent().siblings(".message_form_html_original").hide()}),jQuery("#campaign_data, #message-settings").on("click",".message_image_button",function(a){var b=this;return window.send_to_editor=function(a){imgurl=jQuery("img",a).attr("src"),jQuery(b).parent().find("#upload_image").val(imgurl),tb_remove(),window.send_to_editor=c},!1}),jQuery("#campaign_data, #message-settings").on("click",".message_headline_button",function(){var a=jQuery(this).prev().attr("data-headline"),c=icegram_writepanel_params.available_headlines.length,d=b(a,0,c),e=icegram_writepanel_params.available_headlines[d];jQuery(this).prev().val(e)}),jQuery(".tips, .help_tip").tipTip({attribute:"data-tip"}),jQuery("span.test_class").hover(function(){jQuery(this).next().show()},function(){jQuery(this).next().hide()}),jQuery("#campaign_data .hndle, #campaign_data .handlediv").unbind("click"),jQuery("#campaign_data .handlediv").hide(),jQuery("#poststuff").on("click","#publish",function(a){jQuery("#campaign_data").find(".message_header_label.unknown").length&&(alert("Please select Message type"),a.preventDefault())})}),jQuery("#campaign_data, #message-settings").on("click",".message_delete",function(){jQuery(this).parent().parent().next().remove(),jQuery(this).parent().parent().remove(),d()}),jQuery("#campaign_data, #message-settings").on("click",".message_edit",function(){jQuery(this).parent().parent().next().toggle(),jQuery(this).parent().parent().find(".message-title-text, .message-title-input").toggle()}),jQuery("#campaign_data, #message-settings").on("click",".embed_form_code_toggle",function(){jQuery(this).parent().parent().siblings(".message_form_html_original").toggle()}),jQuery("#campaign_data, #message-settings").on("change",".message-title-input",function(){jQuery(this).prev().text(jQuery(this).val())}),jQuery("select.ajax_chosen_select_messages").ajaxChosen({type:"GET",url:icegram_writepanel_params.ajax_url,dataType:"json",afterTypeDelay:100,data:{action:"icegram_json_search_messages",security:icegram_writepanel_params.search_message_nonce}},function(a){var b={};return jQuery.each(a,function(a,c){b[a]=c}),b}),jQuery("#campaign_data, #message-settings").on("change",".show_form_options",function(a){var b=jQuery(this).closest("p");if(jQuery(b).siblings(".message_form_options").slideToggle(this.checked),this.checked)jQuery(b).siblings(".message_form_options").find(".message_form_layout").change();else{jQuery(b).siblings("p.cta-actions").find("select option").removeAttr("disabled");var c=jQuery(b).siblings(".message_form_options").siblings(".wp-editor-wrap").find(".wp-editor-area"),d=jQuery(c).val().trim().replace("[ig_form]","");jQuery(c).val(d)}}).change(),jQuery("#campaign_data, #message-settings").on("change",".message_form_style",function(a){var b=jQuery(a.target).parents(".message-setting-fields"),c=jQuery(b).find("#message_form_style").val(),d=jQuery(b).find("#message_form_style").find("."+c).attr("style");jQuery(b).find(".message_form_style").next().find(".chosen-single span").attr("style",d).text(function(){return jQuery(this).text().substr(0,jQuery(this).text().indexOf(" "))||jQuery(this).text()})}),jQuery("#campaign_data, #message-settings").on("change",".message_form_layout ",function(){if(jQuery(this).is(":visible")){var a=this,b=jQuery(this).closest(".message_form_options").siblings(".wp-editor-wrap").find(".wp-editor-area"),c=jQuery(b).val().trim();jQuery(a).closest(".form_radio_group").siblings(".form_inline_shortcode").hide(),jQuery(a).closest(".form_radio_group").siblings(".message_form_color").show(),jQuery(a).is(":checked")&&jQuery(a).closest(".message_form_options").prev("p.message_form_options_check").find(".show_form_options").is(":checked")&&("inline"==jQuery(a).val()?(-1==c.indexOf("[ig_form]")&&(c+="[ig_form]"),jQuery(a).closest(".form_radio_group").siblings(".message_form_color, .form_inline_shortcode").toggle()):"inline"!=jQuery(a).val()&&(c=c.replace("[ig_form]",""))),jQuery(b).val(c)}}),jQuery("#campaign_data, #message-settings").on("blur",".message_form_html_original",function(a){var b=this,c=jQuery("<div/>").html(jQuery(b).val()).find("input[type=submit], button, input[type=button]").not("*:disabled"),d=jQuery(b).closest(".message_form_options");if(jQuery(d).parent().find("p.cta-actions select option").removeAttr("disabled"),void 0!=jQuery(b).val()&&""!=jQuery(b).val()&&jQuery(d).parent().find("p.cta-actions select").find('option[value="url"], option[value="hide"], option[value="cta_another_message"]').attr("disabled",!0).attr("selected",!1).end().find('option[value="form"]').attr("selected",!0).trigger("change"),c.length>0){var e=jQuery(c[c.length-1]),f=e.is("button")?e.not("br, span, div").text():e.val();jQuery(d).siblings("p").find("#message_label").val(f.trim())}}),jQuery("#campaign_data, #message-settings").on("change",".show_custom_code_options",function(a){var b=jQuery(this).closest("p");jQuery(b).siblings(".message_custom_code_options").slideToggle(this.checked)}),jQuery(".ajax_chosen_select_messages").chosen(),jQuery("#campaign_data, #message-settings").on("change",".ajax_chosen_select_messages",function(){var b={},c=jQuery("#ig-st-tabs li.current").attr("variation_id");"undefined"!=typeof c&&jQuery.extend(b,{selected_tab:c});var e=jQuery.extend({},tinyMCEPreInit.mceInit.content),f=jQuery.extend({},tinyMCEPreInit.qtInit.content),g=jQuery(this).parent().siblings(".campaign_target_rules_panel");"undefined"!=typeof g&&(b.parent_campaign_box=g);var h=jQuery(g).find(".message-row").length,i=jQuery(this).val();return""==i?void jQuery(".ajax_chosen_select_messages").val("").trigger("chosen:updated"):(jQuery(".message-edit-row").hide(),jQuery(".message-title-text").show(),jQuery(".message-title-input").hide(),void jQuery.ajax({type:"POST",url:icegram_writepanel_params.ajax_url,dataType:"json",data:{action:"get_message_action_row",message_id:i,row:h},success:function(c){if(h++,jQuery(g).find(".messages-list .messages_list_table tbody").append(c.main),jQuery(".color-field").wpColorPicker().each(function(a){var b=jQuery(this).data("color-label")||"";""!==b&&jQuery(this).closest(".wp-picker-container").find("a.wp-color-result").attr("title",b)}),jQuery("#campaign_data, #message-settings").on("change",".show_color_options",function(){jQuery(this).closest("p").next(".message_colors_options_container").toggle(!this.checked)}).change(),a(jQuery("#"+c.id)),jQuery(".ajax_chosen_select_messages").val("").trigger("chosen:updated"),jQuery("#campaign_data, #message-settings").find(".message_theme").append('<option value="ig_get_more_theme" class="ig_get_more">Get more Themes</option>'),jQuery("#campaign_data, #message-settings").find(".message_animation").append('<option value="ig_get_more_animation" class="ig_get_more">Get more Animations</option>'),jQuery("select.icegram_chosen_page").chosen({disable_search_threshold:10}),d(),jQuery(".message-setting-fields").trigger("change"),jQuery(".tips, .help_tip").tipTip({attribute:"data-tip"}),"undefined"==typeof tinyMCEPreInit.mceInit["edit"+c.id]){for(_prop in e)"string"==typeof e[_prop]&&"content_css"!==_prop&&(e[_prop]=e[_prop].replace(new RegExp("content","g"),"edit"+c.id));tinyMCEPreInit.mceInit["edit"+c.id]=e}if("undefined"==typeof tinyMCEPreInit.qtInit["edit"+c.id]){for(_prop in f)"string"==typeof f[_prop]&&"content_css"!==_prop&&(f[_prop]=f[_prop].replace(new RegExp("content","g"),"edit"+c.id));tinyMCEPreInit.qtInit["edit"+c.id]=f}tinyMCE.init({id:tinyMCEPreInit.mceInit["edit"+c.id]}),quicktags({id:"edit"+c.id}),QTags._buttonsInit(),jQuery("#wp-edit"+c.id+"-wrap").hasClass("tmce-active")?jQuery("#edit"+c.id+"-tmce").click():jQuery("#edit"+c.id+"-html").click(),jQuery(window).trigger("icegram_message_added_ajax",[b])}}))}),jQuery("#campaign_target_rules").on("click","#add_local_url_row",function(a){a.preventDefault();var b=c();jQuery(".local_url").find(".url_input_field").length?jQuery(b).insertAfter(jQuery(".local_url").find(".url_input_field").last().parent("span")):jQuery(b).insertBefore(jQuery(".local_url").find("#add_local_url_row_label"))}),jQuery("#campaign_target_rules").on("click",".delete-url",function(a){jQuery(this).parent().remove()}),jQuery("select.ajax_chosen_select_messages").next("div").on("click","div.chosen-drop",function(){jQuery(this).closest("h3.hndle").trigger("click")}),jQuery("#campaign_data").on("click",".campaign_preview",function(a){jQuery(this).closest("h3.hndle").trigger("click"),0!=jQuery(".message-row").length&&(tinyMCE.triggerSave(),params=jQuery("#post").serializeArray(),params.push({name:"action",value:"save_campaign_preview"}),jQuery.ajax({type:"POST",async:!1,url:icegram_writepanel_params.ajax_url,data:params,success:function(a){""!=a&&window.open(a,"preview_window")}}))}),jQuery("#campaign_data, #message-settings").find(".message_theme").append('<option value="ig_get_more_theme" class="ig_get_more">Get more themes</option>'),jQuery("#campaign_data, #message-settings").find(".message_animation").append('<option value="ig_get_more_animation" class="ig_get_more">Get more Animations</option>'),jQuery("#campaign_data, #message-settings").on("change",".message_theme, .message_animation",function(){"ig_get_more_theme"==jQuery(this).val()&&window.open("http://www.icegram.com/product-category/themes-addons/?utm_source=icegram&utm_medium=admin&utm_campaign=theme_packs"),"ig_get_more_animation"==jQuery(this).val()&&window.open("http://www.icegram.com/addons/icegram-animation-pack/?utm_source=icegram&utm_medium=admin&utm_campaign=animation_pack")}),jQuery("select.icegram_chosen_page").chosen({disable_search_threshold:10}),jQuery("input#users_logged_in, input#users_all ,input#users_not_logged_in").on("change",function(){"logged_in"==jQuery(this).val()?(jQuery("select#users_roles").parent("p").show(),jQuery("#users_roles_chosen").find("input").trigger("click")):jQuery("select#users_roles").parent("p").hide()}),jQuery(".schedule_rule").on("change",function(){"when_schedule"==jQuery(this).attr("id")?jQuery("#date_picker").show():jQuery("#date_picker").hide()}),jQuery("input#where_other_page").on("change",function(){jQuery("select#where_page_id").parent("p").slideToggle(),jQuery(this).is(":checked")&&jQuery("#where_page_id_chosen").find("input").trigger("click")}),jQuery("input#where_sitewide").on("change",function(){jQuery("select#exclude_page_id").parent("p").slideToggle()}),jQuery("input#where_local_url").on("change",function(){jQuery(".local_url").slideToggle()}),jQuery(".date-picker").datepicker({dateFormat:"yy-mm-dd",defaultDate:0,showOtherMonths:!0,selectOtherMonths:!0,changeMonth:!0,changeYear:!0,showButtonPanel:!0}),jQuery("#campaign_target_rules").on("focusout","input.url_input_field",function(){var a=this;if(jQuery(a).parent().find("span#valid-field").removeClass("error"),"undefine"!==jQuery(a).data("option")&&"local_url"==jQuery(a).data("option")&&"*"!=jQuery(a).val()){var b=a.value;if(b.indexOf(e)<0)return void jQuery(a).val(e+b)}})});;/*
4
+ * TipTip
5
+ * Copyright 2010 Drew Wilson
6
+ * www.drewwilson.com
7
+ * code.drewwilson.com/entry/tiptip-jquery-plugin
8
+ *
9
+ * Version 1.3 - Updated: Mar. 23, 2010
10
+ *
11
+ * This Plug-In will create a custom tooltip to replace the default
12
+ * browser tooltip. It is extremely lightweight and very smart in
13
+ * that it detects the edges of the browser window and will make sure
14
+ * the tooltip stays within the current window size. As a result the
15
+ * tooltip will adjust itself to be displayed above, below, to the left
16
+ * or to the right depending on what is necessary to stay within the
17
+ * browser window. It is completely customizable as well via CSS.
18
+ *
19
+ * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
20
+ * http://www.opensource.org/licenses/mit-license.php
21
+ * http://www.gnu.org/licenses/gpl.html
22
+ */(function(e){e.fn.tipTip=function(t){var n={activation:"hover",keepAlive:!1,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:!1,enter:function(){},exit:function(){}},r=e.extend(n,t);if(e("#tiptip_holder").length<=0){var i=e('<div id="tiptip_holder" style="max-width:'+r.maxWidth+';"></div>'),s=e('<div id="tiptip_content"></div>'),o=e('<div id="tiptip_arrow"></div>');e("body").append(i.html(s).prepend(o.html('<div id="tiptip_arrow_inner"></div>')))}else var i=e("#tiptip_holder"),s=e("#tiptip_content"),o=e("#tiptip_arrow");return this.each(function(){var t=e(this);if(r.content)var n=r.content;else var n=t.attr(r.attribute);if(n!=""){r.content||t.removeAttr(r.attribute);var u=!1;if(r.activation=="hover"){t.hover(function(){a()},function(){r.keepAlive||f()});r.keepAlive&&i.hover(function(){},function(){f()})}else if(r.activation=="focus")t.focus(function(){a()}).blur(function(){f()});else if(r.activation=="click"){t.click(function(){a();return!1}).hover(function(){},function(){r.keepAlive||f()});r.keepAlive&&i.hover(function(){},function(){f()})}function a(){r.enter.call(this);s.html(n);i.hide().removeAttr("class").css("margin","0");o.removeAttr("style");var a=parseInt(t.offset().top),f=parseInt(t.offset().left),l=parseInt(t.outerWidth()),c=parseInt(t.outerHeight()),h=i.outerWidth(),p=i.outerHeight(),d=Math.round((l-h)/2),v=Math.round((c-p)/2),m=Math.round(f+d),g=Math.round(a+c+r.edgeOffset),y="",b="",w=Math.round(h-12)/2;r.defaultPosition=="bottom"?y="_bottom":r.defaultPosition=="top"?y="_top":r.defaultPosition=="left"?y="_left":r.defaultPosition=="right"&&(y="_right");var E=d+f<parseInt(e(window).scrollLeft()),S=h+f>parseInt(e(window).width());if(E&&d<0||y=="_right"&&!S||y=="_left"&&f<h+r.edgeOffset+5){y="_right";b=Math.round(p-13)/2;w=-12;m=Math.round(f+l+r.edgeOffset);g=Math.round(a+v)}else if(S&&d<0||y=="_left"&&!E){y="_left";b=Math.round(p-13)/2;w=Math.round(h);m=Math.round(f-(h+r.edgeOffset+5));g=Math.round(a+v)}var x=a+c+r.edgeOffset+p+8>parseInt(e(window).height()+e(window).scrollTop()),T=a+c-(r.edgeOffset+p+8)<0;if(x||y=="_bottom"&&x||y=="_top"&&!T){y=="_top"||y=="_bottom"?y="_top":y+="_top";b=p;g=Math.round(a-(p+5+r.edgeOffset))}else if(T|(y=="_top"&&T)||y=="_bottom"&&!x){y=="_top"||y=="_bottom"?y="_bottom":y+="_bottom";b=-12;g=Math.round(a+c+r.edgeOffset)}if(y=="_right_top"||y=="_left_top")g+=5;else if(y=="_right_bottom"||y=="_left_bottom")g-=5;if(y=="_left_top"||y=="_left_bottom")m+=5;o.css({"margin-left":w+"px","margin-top":b+"px"});i.css({"margin-left":m+"px","margin-top":g+"px"}).attr("class","tip"+y);u&&clearTimeout(u);u=setTimeout(function(){i.stop(!0,!0).fadeIn(r.fadeIn)},r.delay)}function f(){r.exit.call(this);u&&clearTimeout(u);i.fadeOut(r.fadeOut)}}})}})(jQuery);
trunk/assets/js/gallery.min.js ADDED
@@ -0,0 +1 @@
 
1
+ window.wp=window.wp||{},function(a){var b,c;b=wp.themes=wp.themes||{},b.data=_wpThemeSettings,c=b.data.l10n,b.isInstall=!!b.data.settings.isInstall,b.isInstall=!0,_.extend(b,{model:{},view:{},routes:{},router:{},template:wp.template}),b.Model=Backbone.Model.extend({initialize:function(){var a;-1!==_.indexOf(b.data.installedThemes,this.get("slug"))&&this.set({installed:!0}),this.set({id:this.get("id")}),this.has("sections")&&(a=this.get("sections").description,this.set({description:a}))}}),b.view.Appearance=wp.Backbone.View.extend({el:"#wpbody-content .wrap .theme-browser",window:a(window),page:0,initialize:function(a){_.bindAll(this,"scroller"),this.SearchView=a.SearchView?a.SearchView:b.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new b.view.Themes({collection:this.collection,parent:this}),this.search(),this.view.render(),this.$el.empty().append(this.view.el).addClass("rendered"),this.$el.append('<br class="clear"/>')},searchContainer:a("#wpbody h1:first"),search:function(){var d,e=this;1!==b.data.themes.length&&(d=new this.SearchView({collection:e.collection,parent:this}),d.render(),this.searchContainer.append(a.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+c.search+"</label>")).append(d.el))},scroller:function(){var a,b,c=this;a=this.window.scrollTop()+c.window.height(),b=c.$el.offset().top+c.$el.outerHeight(!1)-c.window.height(),b=Math.round(.9*b),a>b&&this.trigger("theme:scroll")}}),b.Collection=Backbone.Collection.extend({model:b.Model,terms:"",doSearch:function(c){this.terms!==c&&(this.terms=c,this.terms.length>0&&this.search(this.terms),""===this.terms&&(this.reset(b.data.themes),a("body").removeClass("no-results")),this.trigger("update"))},search:function(c){var d,e,f,g,h,i;this.reset(b.data.themes,{silent:!0}),c=c.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),c=c.replace(/ /g,")(?=.*"),d=new RegExp("^(?=.*"+c+").+","i"),e=this.filter(function(a){return g=a.get("name").replace(/(<([^>]+)>)/gi,""),h=a.get("description").replace(/(<([^>]+)>)/gi,""),i=a.get("author").replace(/(<([^>]+)>)/gi,""),f=_.union(g,a.get("id"),h,i,a.get("tags")),d.test(a.get("author"))&&c.length>2&&a.set("displayAuthor",!0),d.test(f)}),0===e.length?this.trigger("query:empty"):a("body").removeClass("no-results"),this.reset(e)},paginate:function(a){var b=this;return a=a||0,b=_(b.rest(20*a)),b=_(b.first(20))},count:!1,query:function(b){var c,d,e,f=this.queries,g=this;if(this.currentQuery.request=b,c=_.find(f,function(a){return _.isEqual(a.request,b)}),d=_.has(b,"page"),d||(this.currentQuery.page=1),c||d){if(d)return this.apiCall(b,d).done(function(a){g.add(a.themes),g.trigger("query:success"),g.loadingThemes=!1}).fail(function(){g.trigger("query:fail")});0===c.themes.length?g.trigger("query:empty"):a("body").removeClass("no-results"),_.isNumber(c.total)&&(this.count=c.total),this.reset(c.themes),c.total||(this.count=this.length),this.trigger("update"),this.trigger("query:success",this.count)}else c=this.apiCall(b).done(function(a){a&&(g.reset(a),e=a.length,f.push({themes:a,request:b,total:e})),g.trigger("update"),g.trigger("query:success",e),a.themes&&0===a.themes.length&&g.trigger("query:empty")}).fail(function(){g.trigger("query:fail")})},queries:[],currentQuery:{page:1,request:{}},apiCall:function(a,b){var c="//www.icegram.com/gallery/wp-json/wp/v2/galleryitem?per_page=35";return a&&"undefined"!=typeof a.id&&(c=c+"/"+a.id),jQuery.getJSON(c,function(a){a.constructor===Array})},loadingThemes:!1}),b.view.Theme=wp.Backbone.View.extend({className:"theme",state:"grid",html:b.template("theme"),events:{click:b.isInstall?"preview":"expand",keydown:b.isInstall?"preview":"expand",touchend:b.isInstall?"preview":"expand",keyup:"addFocus",touchmove:"preventExpand"},touchDrag:!1,render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)).attr({tabindex:0}),this.model.get("displayAuthor")&&this.$el.addClass("display-author"),this.model.get("installed")&&this.$el.addClass("is-installed")},activeTheme:function(){this.model.get("active")&&this.$el.addClass("active")},addFocus:function(){var b=a(":focus").hasClass("theme")?a(":focus"):a(":focus").parents(".theme");a(".theme.focus").removeClass("focus"),b.addClass("focus")},expand:function(c){var d=this;return c=c||window.event,"keydown"!==c.type||13===c.which||32===c.which?this.touchDrag===!0?this.touchDrag=!1:void(a(c.target).is(".theme-actions a")||(b.focusedTheme=this.$el,this.trigger("theme:expand",d.model.cid))):void 0},preventExpand:function(){this.touchDrag=!0},preview:function(c){var d,e,f=this;return c=c||window.event,this.touchDrag===!0?this.touchDrag=!1:void(a(c.target).hasClass("button-primary")||"keydown"===c.type&&13!==c.which&&32!==c.which||"keydown"===c.type&&13!==c.which&&a(":focus").hasClass("button")||(c.preventDefault(),c=c||window.event,b.focusedTheme=this.$el,e=new b.view.Preview({model:this.model}),e.render(),this.setNavButtonsState(),1===this.model.collection.length?e.$el.addClass("no-navigation"):e.$el.removeClass("no-navigation"),a("div.wrap").append(e.el),this.listenTo(e,"theme:next",function(){return d=f.model,_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)+1),_.isUndefined(f.current)?(f.options.parent.parent.trigger("theme:end"),f.current=d):(e.model=f.current,e.render(),this.setNavButtonsState(),void a(".next-theme").focus())}).listenTo(e,"theme:previous",function(){d=f.model,0!==f.model.collection.indexOf(f.current)&&(_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)-1),_.isUndefined(f.current)||(e.model=f.current,e.render(),this.setNavButtonsState(),a(".previous-theme").focus()))}),this.listenTo(e,"preview:close",function(){f.current=f.model})))},setNavButtonsState:function(){var b=a(".theme-install-overlay"),c=_.isUndefined(this.current)?this.model:this.current;0===this.model.collection.indexOf(c)&&b.find(".previous-theme").addClass("disabled"),_.isUndefined(this.model.collection.at(this.model.collection.indexOf(c)+1))&&b.find(".next-theme").addClass("disabled")}}),b.view.Details=wp.Backbone.View.extend({className:"theme-overlay",events:{click:"collapse","click .delete-theme":"deleteTheme","click .left":"previousTheme","click .right":"nextTheme"},html:b.template("theme-single"),render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)),this.activeTheme(),this.navigation(),this.screenshotCheck(this.$el),this.containFocus(this.$el)},activeTheme:function(){this.$el.toggleClass("active",this.model.get("active"))},containFocus:function(b){var c;_.delay(function(){a(".theme-wrap a.button-primary:visible").focus()},500),b.on("keydown.wp-themes",function(d){9===d.which&&(c=a(d.target),c.is("button.left")&&d.shiftKey?(b.find(".theme-actions a:last-child").focus(),d.preventDefault()):c.is(".theme-actions a:last-child")&&(b.find("button.left").focus(),d.preventDefault()))})},collapse:function(c){var d,e=this;c=c||window.event,1!==b.data.themes.length&&(a(c.target).is(".theme-backdrop")||a(c.target).is(".close")||27===c.keyCode)&&(a("body").addClass("closing-overlay"),this.$el.fadeOut(130,function(){a("body").removeClass("closing-overlay"),e.closeOverlay(),d=document.body.scrollTop,b.router.navigate(b.router.baseUrl("")),document.body.scrollTop=d,b.focusedTheme&&b.focusedTheme.focus()}))},navigation:function(){this.model.cid===this.model.collection.at(0).cid&&this.$el.find(".left").addClass("disabled"),this.model.cid===this.model.collection.at(this.model.collection.length-1).cid&&this.$el.find(".right").addClass("disabled")},closeOverlay:function(){a("body").removeClass("modal-open"),this.remove(),this.unbind(),this.trigger("theme:collapse")},deleteTheme:function(){return confirm(b.data.settings.confirmDelete)},nextTheme:function(){var a=this;return a.trigger("theme:next",a.model.cid),!1},previousTheme:function(){var a=this;return a.trigger("theme:previous",a.model.cid),!1},screenshotCheck:function(a){var b,c;b=a.find(".screenshot img"),c=new Image,c.src=b.attr("src"),c.width&&c.width<=300&&a.addClass("small-screenshot")}}),b.view.Preview=b.view.Details.extend({className:"wp-full-overlay expanded",el:".theme-install-overlay",events:{"click .close-full-overlay":"close","click .collapse-sidebar":"collapse","click .previous-theme":"previousTheme","click .next-theme":"nextTheme",keyup:"keyEvent"},html:b.template("theme-preview"),render:function(){var c=this,d=this.model.toJSON();this.$el.removeClass("iframe-ready").html(this.html(d)),b.router.navigate(b.router.baseUrl(b.router.themePath+this.model.get("id")),{replace:!0}),this.$el.fadeIn(200,function(){a("body").addClass("theme-installer-active full-overlay-active"),a(".close-full-overlay").focus()}),this.$el.find("iframe").one("load",function(){c.iframeLoaded()})},iframeLoaded:function(){this.$el.addClass("iframe-ready")},close:function(){return this.$el.fadeOut(200,function(){a("body").removeClass("theme-installer-active full-overlay-active"),b.focusedTheme&&b.focusedTheme.focus()}).removeClass("iframe-ready"),b.router.navigate(b.router.baseUrl("")),this.trigger("preview:close"),this.undelegateEvents(),this.unbind(),!1},collapse:function(b){var d=a(b.currentTarget);return"true"===d.attr("aria-expanded")?d.attr({"aria-expanded":"false","aria-label":c.expandSidebar}):d.attr({"aria-expanded":"true","aria-label":c.collapseSidebar}),this.$el.toggleClass("collapsed").toggleClass("expanded"),!1},keyEvent:function(a){27===a.keyCode&&(this.undelegateEvents(),this.close()),39===a.keyCode&&_.once(this.nextTheme()),37===a.keyCode&&this.previousTheme()}}),b.view.Themes=wp.Backbone.View.extend({className:"themes",$overlay:a("div.theme-overlay"),index:0,count:a(".wp-core-ui .theme-count"),liveThemeCount:0,initialize:function(b){var c=this;this.parent=b.parent,this.setView("grid"),c.currentTheme(),this.listenTo(c.collection,"update",function(){c.parent.page=0,c.currentTheme(),c.render(this)}),this.listenTo(c.collection,"query:success",function(a){_.isNumber(a)?(c.count.text(a),c.announceSearchResults(a)):(c.count.text(c.collection.length),c.announceSearchResults(c.collection.length))}),this.listenTo(c.collection,"query:empty",function(){a("body").addClass("no-results")}),this.listenTo(this.parent,"theme:scroll",function(){c.renderThemes(c.parent.page)}),this.listenTo(this.parent,"theme:close",function(){c.overlay&&c.overlay.closeOverlay()}),a("body").on("keyup",function(a){c.overlay&&(39===a.keyCode&&c.overlay.nextTheme(),37===a.keyCode&&c.overlay.previousTheme(),27===a.keyCode&&c.overlay.collapse(a))})},render:function(){this.$el.empty(),1===b.data.themes.length&&(this.singleTheme=new b.view.Details({model:this.collection.models[0]}),this.singleTheme.render(),this.$el.addClass("single-theme"),this.$el.append(this.singleTheme.el)),this.options.collection.size()>0&&this.renderThemes(this.parent.page),this.liveThemeCount=this.collection.count?this.collection.count:this.collection.length,this.count.text(this.liveThemeCount),this.announceSearchResults(this.liveThemeCount)},renderThemes:function(d){var e=this;return e.instance=e.collection.paginate(d),0===e.instance.size()?void this.parent.trigger("theme:end"):(!b.isInstall&&d>=1&&a(".add-new-theme").remove(),e.instance.each(function(a){e.theme=new b.view.Theme({model:a,parent:e}),e.theme.render(),e.$el.append(e.theme.el),e.listenTo(e.theme,"theme:expand",e.expand,e)}),!b.isInstall&&b.data.settings.canInstall&&this.$el.append('<div class="theme add-new-theme"><a href="'+b.data.settings.installURI+'"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">'+c.addNew+"</h2></a></div>"),void this.parent.page++)},currentTheme:function(){var a,b=this;a=b.collection.findWhere({active:!0}),a&&(b.collection.remove(a),b.collection.add(a,{at:0}))},setView:function(a){return a},expand:function(c){var d=this;this.model=d.collection.get(c),b.router.navigate(b.router.baseUrl(b.router.themePath+this.model.id)),this.setView("detail"),a("body").addClass("modal-open"),this.overlay=new b.view.Details({model:d.model}),this.overlay.render(),this.$overlay.html(this.overlay.el),this.listenTo(this.overlay,"theme:next",function(){d.next([d.model.cid])}).listenTo(this.overlay,"theme:previous",function(){d.previous([d.model.cid])})},next:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)+1),void 0!==c&&(this.overlay.closeOverlay(),d.theme.trigger("theme:expand",c.cid))},previous:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)-1),void 0!==c&&(this.overlay.closeOverlay(),d.theme.trigger("theme:expand",c.cid))},announceSearchResults:function(a){0===a?wp.a11y.speak(c.noThemesFound):wp.a11y.speak(c.themesFound.replace("%d",a))}}),b.view.Search=wp.Backbone.View.extend({tagName:"input",className:"wp-filter-search",id:"wp-filter-search-input",searching:!1,attributes:{placeholder:c.searchPlaceholder,type:"search","aria-describedby":"live-search-desc"},events:{input:"search",keyup:"search",blur:"pushState"},initialize:function(a){this.parent=a.parent,this.listenTo(this.parent,"theme:close",function(){this.searching=!1})},search:function(a){"keyup"===a.type&&27===a.which&&(a.target.value=""),this.doSearch(a)},doSearch:_.debounce(function(a){var c={};this.collection.doSearch(a.target.value),this.searching&&13!==a.which?c.replace=!0:this.searching=!0,a.target.value?b.router.navigate(b.router.baseUrl(b.router.searchPath+a.target.value),c):b.router.navigate(b.router.baseUrl(""))},500),pushState:function(a){var c=b.router.baseUrl("");a.target.value&&(c=b.router.baseUrl(b.router.searchPath+a.target.value)),this.searching=!1,b.router.navigate(c)}}),b.Router=Backbone.Router.extend({routes:{"themes.php?theme=:id":"theme","themes.php?search=:query":"search","themes.php?s=:query":"search","themes.php":"themes","":"themes"},baseUrl:function(a){return"themes.php"+a},themePath:"?theme=",searchPath:"?search=",search:function(b){a(".wp-filter-search").val(b)},themes:function(){a(".wp-filter-search").val("")},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.Run={init:function(){this.themes=new b.Collection(b.data.themes),this.view=new b.view.Appearance({collection:this.themes}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this;b.router=new b.Router,b.router.on("route:item",function(a){c.view.view.expand(a)}),b.router.on("route:themes",function(){c.themes.doSearch(""),c.view.trigger("theme:close")}),b.router.on("route:search",function(){a(".wp-filter-search").trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},b.view.InstallerSearch=b.view.Search.extend({events:{input:"search",keyup:"search"},search:function(a){("keyup"!==a.type||9!==a.which&&16!==a.which)&&(this.collection=this.options.parent.view.collection,"keyup"===a.type&&27===a.which&&(a.target.value=""),this.doSearch(a.target.value))},doSearch:_.debounce(function(c){var d={};d.search=c,"author:"===c.substring(0,7)&&(d.search="",d.author=c.slice(7)),"tag:"===c.substring(0,4)&&(d.search="",d.tag=[c.slice(4)]),a(".filter-links li > a.current").removeClass("current"),a("body").removeClass("show-filters filters-applied show-favorites-form"),this.collection.query(d),b.router.navigate(b.router.baseUrl(b.router.searchPath+c),{replace:!0})},500)}),b.view.Installer=b.view.Appearance.extend({el:"#wpbody-content .wrap",events:{"click .filter-links li > a":"onSort","click .theme-filter":"onFilter","click .drawer-toggle":"moreFilters","click .filter-drawer .apply-filters":"applyFilters",'click .filter-group [type="checkbox"]':"addFilter","click .filter-drawer .clear-filters":"clearFilters","click .filtered-by":"backToFilters","click .favorites-form-submit":"saveUsername","keyup #wporg-username-input":"saveUsername"},render:function(){var d=this;this.search(),this.uploader(),this.collection=new b.Collection,this.listenTo(this,"theme:end",function(){d.collection.loadingThemes||(d.collection.loadingThemes=!0,d.collection.currentQuery.page++,_.extend(d.collection.currentQuery.request,{page:d.collection.currentQuery.page}),d.collection.query(d.collection.currentQuery.request))}),this.listenTo(this.collection,"query:success",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove()}),this.listenTo(this.collection,"query:fail",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove(),a(".theme-browser").find("div.themes").before('<div class="error"><p>'+c.error+"</p></div>")}),this.view&&this.view.remove(),this.view=new b.view.Themes({collection:this.collection,parent:this}),this.page=0,this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},browse:function(a){this.collection.query({browse:a})},onSort:function(c){var d=a(c.target),e=d.data("sort");c.preventDefault(),a("body").removeClass("filters-applied show-filters"),d.hasClass(this.activeClass)||(this.sort(e),b.router.navigate(b.router.baseUrl(b.router.browsePath+e)))},sort:function(b){this.clearSearch(),a(".filter-links li > a, .theme-filter").removeClass(this.activeClass),a('[data-sort="'+b+'"]').addClass(this.activeClass),"favorites"===b?a("body").addClass("show-favorites-form"):a("body").removeClass("show-favorites-form"),this.browse(b)},onFilter:function(b){var c,d=a(b.target),e=d.data("filter");d.hasClass(this.activeClass)||(a(".filter-links li > a, .theme-section").removeClass(this.activeClass),d.addClass(this.activeClass),e&&(e=_.union(e,this.filtersChecked()),c={tag:[e]},this.collection.query(c)))},addFilter:function(){this.filtersChecked()},applyFilters:function(b){var c,d=this.filtersChecked(),e={tag:d},f=a(".filtered-by .tags");b&&b.preventDefault(),a("body").addClass("filters-applied"),a(".filter-links li > a.current").removeClass("current"),f.empty(),_.each(d,function(b){c=a('label[for="filter-id-'+b+'"]').text(),f.append('<span class="tag">'+c+"</span>")}),this.collection.query(e)},saveUsername:function(b){var c=a("#wporg-username-input").val(),d={browse:"favorites",user:c},e=this;return b&&b.preventDefault(),"keyup"!==b.type||13===b.which?wp.ajax.send("save-wporg-username",{data:{username:c},success:function(){e.collection.query(d)}}):void 0},filtersChecked:function(){var b=a(".filter-group").find(":checkbox"),c=[];return _.each(b.filter(":checked"),function(b){c.push(a(b).prop("value"))}),0===c.length?(a(".filter-drawer .apply-filters").find("span").text(""),a(".filter-drawer .clear-filters").hide(),a("body").removeClass("filters-applied"),!1):(a(".filter-drawer .apply-filters").find("span").text(c.length),a(".filter-drawer .clear-filters").css("display","inline-block"),c)},activeClass:"current",searchContainer:a(".wp-filter .search-form"),uploader:function(){a("a.upload").on("click",function(c){c.preventDefault(),a("body").addClass("show-upload-theme"),b.router.navigate(b.router.baseUrl("?upload"),{replace:!0})}),a("a.browse-themes").on("click",function(c){c.preventDefault(),a("body").removeClass("show-upload-theme"),b.router.navigate(b.router.baseUrl(""),{replace:!0})})},moreFilters:function(c){return c.preventDefault(),a("body").hasClass("filters-applied")?this.backToFilters():a("body").hasClass("show-filters")&&this.filtersChecked()?this.addFilter():(this.clearSearch(),b.router.navigate(b.router.baseUrl("")),void a("body").toggleClass("show-filters"))},clearFilters:function(b){var c=a(".filter-group").find(":checkbox"),d=this;b.preventDefault(),_.each(c.filter(":checked"),function(b){return a(b).prop("checked",!1),d.filtersChecked()})},backToFilters:function(b){b&&b.preventDefault(),a("body").removeClass("filters-applied")},clearSearch:function(){a("#wp-filter-search-input").val("")}}),b.InstallerRouter=Backbone.Router.extend({routes:{"edit.php?post_type=ig_campaign&page=icegram-gallery&item=:id":"preview","edit.php?post_type=ig_campaign&page=icegram-gallery&browse=:sort":"sort","edit.php?post_type=ig_campaign&page=icegram-gallery":"sort"},baseUrl:function(a){return"edit.php?post_type=ig_campaign&page=icegram-gallery"+a},themePath:"&item=",browsePath:"?browse=",searchPath:"?search=",search:function(b){a(".wp-filter-search").val(b)},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.RunInstaller={init:function(){this.view=new b.view.Installer({section:"featured",SearchView:b.view.InstallerSearch}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this,d={};b.router=new b.InstallerRouter,b.router.on("route:preview",function(a){d.id=a,c.view.collection.query(d),c.view.collection.once("update",function(){c.view.view.theme.preview()})}),b.router.on("route:sort",function(a){a||(a="featured"),c.view.sort(a),c.view.trigger("theme:close")}),b.router.on("route:upload",function(){a("a.upload").trigger("click")}),b.router.on("route:search",function(){a(".wp-filter-search").focus().trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},a(document).ready(function(){b.isInstall?b.RunInstaller.init():b.Run.init(),a(".broken-themes .delete-theme").on("click",function(){return confirm(_wpThemeSettings.settings.confirmDelete)})})}(jQuery);var tb_position;jQuery(document).ready(function(a){tb_position=function(){var b=a("#TB_window"),c=a(window).width(),d=a(window).height(),e=c>1040?1040:c,f=0;a("#wpadminbar").length&&(f=parseInt(a("#wpadminbar").css("height"),10)),b.size()&&(b.width(e-50).height(d-45-f),a("#TB_iframeContent").width(e-50).height(d-75-f),b.css({"margin-left":"-"+parseInt((e-50)/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&b.css({top:20+f+"px","margin-top":"0"}))},a(window).resize(function(){tb_position()})});
trunk/assets/js/icegram.min.js ADDED
@@ -0,0 +1 @@
 
1
+ function Icegram(){}function Icegram_Message_Type(a){var a;this.root_container="#icegram_messages_container",this.data=a,this.type=a.type,this.data.delay_time=parseInt(this.data.delay_time),"string"!=typeof this.data.link||""==this.data.link||/^tel:/i.test(this.data.link)||/^https?:\/\//i.test(this.data.link)||(this.data.link="http://"+this.data.link),this.set_template(this.get_template_default()),this.init()}Icegram.prototype.init=function(a){if(void 0!=a){jQuery(window).trigger("preinit.icegram",[a]),this.data=a,this.defaults=jQuery.extend({},a.defaults),this.message_data=a.messages,this.messages,this.tracking_data=[],this.message_template_cache={},this.map_id_to_index={},this.map_type_to_index={},this.mode=void 0==window.ig_mode?"local":window.ig_mode,this.powered_by={link:"http://www.icegram.com/?utm_source=inapp&utm_campaign=poweredby&utm_medium="},this.powered_by.text=this.defaults.powered_by_text,this.powered_by.logo=this.defaults.powered_by_logo,jQuery("body").append('<div id="icegram_messages_container"></div>');this.messages=[];var b=this;this.message_data.length>0&&jQuery.each(this.message_data,function(a,c){try{if(-1==window.location.href.indexOf("campaign_preview_id")){if("yes"==c.retargeting&&1==jQuery.cookie("icegram_campaign_shown_"+c.campaign_id))return;if("yes"==c.retargeting_clicked&&1==jQuery.cookie("icegram_campaign_clicked_"+c.campaign_id))return}var d=null,e=c.type.split("-").join(" ").ucwords().split(" ").join("_");d="function"==typeof window["Icegram_Message_Type_"+e]?new window["Icegram_Message_Type_"+e](c):new Icegram_Message_Type(c),b.messages.push(d),b.map_id_to_index["_"+c.id]=a,b.map_type_to_index[c.type]=jQuery.isArray(b.map_type_to_index[c.type])?b.map_type_to_index[c.type]:new Array,b.map_type_to_index[c.type].push(a)}catch(f){console.log(f)}}),jQuery(window).unload(function(){"function"==typeof window.icegram.submit_tracking_data&&window.icegram.submit_tracking_data(!1)}),setInterval(function(){"function"==typeof window.icegram.submit_tracking_data&&window.icegram.submit_tracking_data(!0)},5e3),jQuery(window).trigger("init.icegram",[this])}},Icegram.prototype.timer_tick=function(){},Icegram.prototype.get_template_fn=function(a){return this.message_template_cache[a]},Icegram.prototype.set_template_fn=function(a,b){this.message_template_cache[a]=b},Icegram.prototype.get_message=function(a){return this.messages.length>a?this.messages[a]:void 0},Icegram.prototype.get_message_by_id=function(a){if(this.map_id_to_index.hasOwnProperty("_"+a)){var b=this.map_id_to_index["_"+a];return this.get_message(b)}},Icegram.prototype.get_message_by_campaign_id=function(a){a=String(a);var b=[],c=this.messages;return a.indexOf(" ")&&(a=a.split(" ")),jQuery.each(a,function(a,d){jQuery.each(c,function(a,c){d==c.data.campaign_id&&b.push(c)})}),b},Icegram.prototype.get_messages_by_type=function(a){if(this.map_type_to_index.hasOwnProperty(a)){var b=this.map_type_to_index[a],c=[];if(jQuery.isArray(b)){var d=this;jQuery.each(b,function(a,b){c.push(d.get_message(b))})}return c}},Icegram.prototype.get_powered_by=function(a){var b=jQuery.extend({},this.powered_by);return b.link=b.link+(a||""),b},Icegram.prototype.track=function(a,b){"object"==typeof b&&b.hasOwnProperty("message_id")&&b.hasOwnProperty("campaign_id")&&(jQuery(window).trigger("track.icegram",[a,b]),this.tracking_data.push({type:a,params:b}))},Icegram.prototype.submit_tracking_data=function(a){var b=window.location.protocol.split(":"),c=b[0],d=this.data.ajax_url.split("://"),e=d[0];if(this.tracking_data.length>0&&-1==window.location.href.indexOf("campaign_preview_id")&&!this.is_bot()){var f={type:"POST",url:this.data.ajax_url,async:a||!1,data:{action:"icegram_event_track",event_data:JSON.parse(JSON.stringify(this.tracking_data)),ig_remote_url:"remote"==this.mode?window.location.href:void 0},success:function(a,b,c){},error:function(a,b,c){}};"remote"==this.mode?(f.xhrFields={withCredentials:!0},f.crossDomain=!0,f.async=!0):c!=e&&(f.xhrFields={withCredentials:!0},jQuery.extend(f.data,{ig_local_url_cs:window.location.href})),jQuery.ajax(f),this.tracking_data=[]}},Icegram.prototype.is_bot=function(){var a=/bot|spider|crawl|sucker|ia_archiver|alexa|spade|slurp|webbug|ZyBorg|Feedfetcher-Google|Mediapartners-Google|aolserver|seamonkey|binlar|casper|comodo|feedfinder|jakarta|java|larbin|libwww|pycurl|linkwalker|steeler|nutch|turnit|zmeu/i;return!!a.test(navigator.userAgent)},Icegram.prototype.hide_all_messages=function(){this.messages.length>0&&jQuery.each(this.messages,function(a,b){b.hide()})},Icegram_Message_Type.prototype.init=function(){this.render(),this.add_event_handlers()},Icegram_Message_Type.prototype.add_event_handlers=function(){this.el.on("click",{self:this},this.on_click),jQuery(window).on("resize",{self:this},this.on_resize)},Icegram_Message_Type.prototype.animations={},Icegram_Message_Type.prototype.embed_form=function(){if(-1===jQuery.inArray(this.data.type,["toast","badge","ribbon","exit-redirect"])){var a=null,b=this.data.form_layout,c=this.data.form_has_label,d=this.data.form_style||"none",e=this.data.label||void 0;if(d=d.toLowerCase().replace(" ","_"),void 0!=this.data.use_form&&"yes"==this.data.use_form&&(a=this.data.form_html),this.el.find("form.ig_embed_form").length>0){var f=this.el.find("form.ig_embed_form");b="inline",-1===jQuery.inArray(this.data.type,["messenger","tab","sidebar","interstitial","sticky"])&&(f.hasClass("ig_left")?b="left":f.hasClass("ig_right")&&(b="right")),"inline"==b&&this.el.find("form.ig_embed_form").replaceWith('<div class="ig_form_container layout_inline"></div>'),c=f.find(".ig_form_el_group label").length>0?"yes":void 0,0==f.find(".ig_button").length&&0==f.find("button[type=submit]").length&&(e=e||"Submit",f.append('<input class="ig_button" type="submit" value="'+e+'">')),a=jQuery("<div/>").append(f).html()}if(null==a)this.el.find(".ig_form_container").remove();else{var g=window.icegram.formProcess(this,a);if(g){var h=void 0!=this.data.form_header&&""!=this.data.form_header?'<div class="ig_form_header">'+this.data.form_header+"</div>":"",i=void 0!=this.data.form_footer&&""!=this.data.form_footer?'<div class="ig_form_footer">'+this.data.form_footer+"</div>":"";if(this.el.find(".ig_form_container").append(h).append(g).append(i),this.data.rainmaker_form_code&&""!=this.data.rainmaker_form_code){this.data.cta&&"form"!==this.data.cta&&this.data.show_response&&this.data.response_text&&(!this.data.response_text||""!=this.data.response_text)||(this.data.response_text=jQuery("<div/>").html(a).find(".rm_form_message").html()||""),this.el.find(".ig_form_container").addClass(jQuery("<div/>").html(a).find(".rm_form_container").data("type")).data("form-id",jQuery("<div/>").html(a).find(".rm_form_container").data("form-id")).addClass("rainmaker_form");var j=jQuery("<div/>").html(a).find("#rm_script"),k=jQuery("<div/>").html(a).find("#rm_style");this.el.find(".ig_form_container").prepend(k).append(j)}void 0==c?this.el.find(".ig_el_label").not("span.ig_el_label").remove():(this.el.find("input, textarea").removeAttr("placeholder"),this.el.find("select option.ig_el_placeholder").remove()),this.el.find(".ig_form_container .ig_button").length>0&&(this.el.find(".ig_button").not(".ig_form_container .ig_button").hide(),e=e||this.el.find(".ig_button").val()||"Submit",this.el.find(".ig_button").val(e)),this.el.addClass("ig_form_"+b);var l="";void 0!=this.data.form_bg_color&&""!=this.data.form_bg_color?(this.el.find(".ig_form_container").css("background-color",this.data.form_bg_color),l+=".ig_form_"+b+".ig_form_"+d+" .ig_form_container:before{ background-color:"+this.data.form_bg_color+"; border-color:"+this.data.form_bg_color+";}"):l+=".ig_form_"+b+".ig_form_"+d+" .ig_form_container:before{ display:none;}",void 0!=this.data.form_text_color&&""!=this.data.form_text_color&&this.el.find(".ig_form_container").css("color",this.data.form_text_color),this.el.addClass("ig_form_"+d).find(".ig_form_container").prepend('<style type="text/css">'+l+"</style>"),this.el.find(".ig_form_container.layout_"+b+" .ig_form_els").first().addClass("ig_form_els_first").end().last().addClass("ig_form_els_last")}}}},Icegram_Message_Type.prototype.render=function(){this.pre_render();var a=this.render_template();try{jQuery(this.root_container).append(a)}catch(b){}this.dom_id="icegram_message_"+this.data.id,this.el=jQuery("#"+this.dom_id),this.set_position();var c=window.icegram.get_powered_by(this.type);if(c.hasOwnProperty("link")&&c.hasOwnProperty("text")&&""!=c.text&&this.add_powered_by(c),void 0!=this.data.headline&&""!=this.data.headline||this.el.find(".ig_headline").hide(),void 0!=this.data.icon&&""!=this.data.icon||this.el.addClass("ig_no_icon").find(".ig_icon").remove(),void 0!=this.data.message&&""!=this.data.message||this.el.find(".ig_message").hide(),void 0!=this.data.label&&""!=this.data.label||this.el.find(".ig_button").hide(),this.embed_form(),void 0==this.data.use_theme_defaults||"yes"!=this.data.use_theme_defaults){if(void 0!=this.data.text_color&&""!=this.data.text_color&&(this.el.css("color",this.data.text_color),this.el.find(".ig_container").css("color",this.data.text_color)),void 0!=this.data.bg_color&&""!=this.data.bg_color&&(this.el.css("background-color",this.data.bg_color),this.el.find(".ig_container").css("background-color",this.data.bg_color)),void 0!=this.data.cta_bg_color&&""!=this.data.cta_bg_color){this.el.find('.ig_button, form input[type="submit"]').css("background-color",this.data.cta_bg_color);var d=window.icegram.hexToHsl(this.data.cta_bg_color);this.el.find('.ig_button, form input[type="submit"]').css("border-color","hsl("+d.h+","+(d.s-5)+"%,"+(d.l-8)+"%)")}void 0!=this.data.cta_text_color&&""!=this.data.cta_text_color&&this.el.find('.ig_button, form input[type="submit"]').css("color",this.data.cta_text_color)}this.data.use_custom_code&&this.data.custom_css&&this.el.prepend('<style id="ig_custom_css_'+this.data.id+'" type="text/css">'+this.data.custom_css.replace(/#ig_this_message/g,"#"+this.dom_id)+"</style>"),"string"==typeof this.data.link&&""!=this.data.link&&this.el.parent().find(".ig_cta, .ig_button").css("cursor","pointer"),this.post_render(),this.hide({},!0),this.set_up_show_trigger()},Icegram.prototype.formProcess=function(a,b){var c=jQuery("<div/>").html(b).find('input[name="fake_text"]').data("required_field",!0).end().find("input.rm_required_feild").data("required_field",!0).end().find(".gform_validation_container input").data("required_field",!0).end().find(".required_field").data("required_field",!0).end().find("input, label, select, textarea, button").not("br");if(c.length>0){var d=jQuery('<div class="ig_embed_form_container ig_clear_fix"></div>'),e=jQuery("<div/>").html(b).find("form").removeAttr("class").removeAttr("style").addClass("ig_clear_fix").empty(),f=".",g=0;jQuery.each(c,function(a,b){var c=jQuery(b),e=jQuery('<div class="ig_form_els"></div>');if(c.removeAttr("class").removeAttr("style"),(-1==c.attr("tabindex")||c.is('*[name*="[abs]"]')||c.data("required_field")||"_mc4wp_required_but_not_really"==c.attr("name"))&&(c.addClass("ig_form_required_field").removeData("required_field"),g--),"hidden"!=c.attr("type")&&c.prop("disabled")!==!0||(c.addClass("ig_form_hidden_field"),g--),c.is("label"))f=c.not("input, select, textarea, button, span, br").text().replace(/\s+/g," ")||".";else if((c.is("input")||c.is("button")||c.is("textarea")||c.is("select"))&&!c.is("input[type=radio]")){if(c.removeAttr("id"),c.is("button")){var h=c.not("br, span, div").text().trim()||"";c.remove(),c=jQuery('<input type="submit" value="'+h+'">')}!c.is("input[type=submit]")&&!c.is("input[type=button]")||c.is(".ig_form_hidden_field, .ig_form_required_field")||c.addClass("ig_button"),(c.is("input[type=text]")||c.is("input[type=email]"))&&c.attr("size",25),label_class="ig_el_label ig_button_label","."!=f&&(label_class="ig_el_label",c.is("select")?jQuery('<option class="ig_el_placeholder">'+f+"</option>").prependTo(c):c.attr("placeholder",f)),jQuery('<label class="'+label_class+'">'+f+"</label>").appendTo(e),f=".",e.append(c),d.append(e),g++}else c.is("input[type=radio]")&&(label_class="ig_el_label ig_button_label","."!=f&&(label_class="ig_el_label"),jQuery('<label><span class="'+label_class+'">'+f+"</span></label>").prepend(c).appendTo(e),f=".",e.addClass("ig_form_el_radio"),d.append(e),g++)});var h=["","ig_full","ig_half","ig_third","ig_quater"];return g=4>g?g:4,d.find(".ig_form_required_field").length<=0&&d.append('<div class="ig_form_els"><input class="ig_form_required_field" type="text" tabindex="-1" value="" /></div>'),d.addClass(h[g]).find(".ig_form_required_field").parent().removeClass("ig_form_els").css({position:"absolute",left:"-5000px"}).end().end().find(".ig_form_hidden_field").parent().removeClass("ig_form_els").css({display:"none"}),e.append(d),jQuery("<div/>").append(e).html()}return null},Icegram_Message_Type.prototype.render_template=function(){return"function"!=typeof window.icegram.get_template_fn(this.type)&&window.icegram.set_template_fn(this.type,new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+this.template.replace(/[\r\t\n]/g," ").split("{{").join(" ").replace(/((^|\}\})[^\t]*)'/g,"$1\r").replace(/\t=(.*?)\}\}/g,"',$1,'").split(" ").join("');").split("}}").join("p.push('").split("\r").join("\\'")+"');}return p.join('');")),window.icegram.get_template_fn(this.type)(this.data)},Icegram_Message_Type.prototype.pre_render=function(){},Icegram_Message_Type.prototype.post_render=function(){},Icegram_Message_Type.prototype.set_up_show_trigger=function(){if(isNaN(this.data.delay_time))this.show();else if(this.data.delay_time>=0){var a=this;this.timer=setTimeout(function(){a.show()},1e3*this.data.delay_time)}},Icegram_Message_Type.prototype.set_template=function(a){this.template=a},Icegram_Message_Type.prototype.get_template_default=function(){return'<div id="icegram_message_{{=id}}" class="icegram"><div class="ig_headline">{{=headline}}</div></div>'},Icegram_Message_Type.prototype.show=function(a,b){this.is_visible()||(this.animate("in"),this.pre_show(),this.el.show(a),this.el.addClass("ig_show").removeClass("ig_hide"),b!==!0&&this.track("shown"),this.post_show());var c=this;window.icegram.adjustFormContainerHeight(c)},Icegram_Message_Type.prototype.hide=function(a,b){if(this.is_visible()){var c=this;this.animate("out"),this.pre_hide(),setTimeout(function(){c.el.hasClass("ig_no_hide")||c.el.hide(a),c.el.addClass("ig_hide").removeClass("ig_show")},500),b!==!0&&this.track("closed"),this.post_hide()}},Icegram_Message_Type.prototype.set_position=function(){},Icegram_Message_Type.prototype.add_powered_by=function(a){},Icegram_Message_Type.prototype.pre_show=function(){},Icegram_Message_Type.prototype.post_show=function(){},Icegram_Message_Type.prototype.pre_hide=function(){},Icegram_Message_Type.prototype.post_hide=function(){},Icegram_Message_Type.prototype.track=function(a,b){"function"==typeof window.icegram.track&&(b=b||{},jQuery.extend(b,{message_id:this.data.id,campaign_id:this.data.campaign_id,expiry_time:this.data.expiry_time,expiry_time_clicked:this.data.expiry_time_clicked}),window.icegram.track(a,b))},Icegram_Message_Type.prototype.is_visible=function(){return this.el.hasClass("ig_show")},Icegram_Message_Type.prototype.toggle=function(a){this.is_visible()?this.hide(a):this.show(a)},Icegram_Message_Type.prototype.on_click=function(a){if(a.data=a.data||{self:this},jQuery(a.target).filter(".ig_close").length)return void a.data.self.hide();var b=jQuery(a.target).closest(".icegram").find("form:visible").first();(jQuery(a.target).filter(".ig_button, .ig_cta, :submit").length||jQuery(a.target).parents("button[type=submit]").length||jQuery(a.target).parents(".ig_button, .ig_cta").length&&!(b.find(".ig_button, input[type=button], input[type=submit], button[type=submit]").length>0))&&a.data.self.on_cta_click(a)},Icegram_Message_Type.prototype.on_resize=function(a){},Icegram_Message_Type.prototype.on_cta_click=function(a){a.data=a.data||{self:this};var b=jQuery(a.target).closest(".icegram").find("form:visible").first();return jQuery(b).length&&jQuery(b).find(".ig_form_required_field").length&&""!==jQuery(b).find(".ig_form_required_field").val()?(a.preventDefault(),void a.data.self.hide()):(a.data.self.track("clicked"),void(jQuery(b).length?jQuery(b).submit(function(a){jQuery(b).hasClass("ig_form_init_done")&&a.preventDefault()}):"string"==typeof a.data.self.data.link&&""!=a.data.self.data.link?(window.location.href=a.data.self.data.link,a.data.self.hide()):a.data.self.data.hide!==!1&&a.data.self.hide()))},Icegram_Message_Type.prototype.animate=function(a){if("undefined"!=typeof this.data.animation){var b=this.data.animation,c=this;"in"==a?"function"==typeof this.animations[b+"_in"]?this.animations[b+"_in"](c):this.el.hasClass("ig_anim_"+b+"_in")||(this.el.removeClass("ig_anim_"+b+"_out"),setTimeout(function(){c.el.addClass("ig_anim_"+b+"_in")},1)):"out"==a&&("function"==typeof this.animations[b+"_out"]?this.animations[b+"_out"](c):(this.el.removeClass("ig_anim_"+b+"_in"),setTimeout(function(){c.el.addClass("ig_anim_"+b+"_out")},1)))}},String.prototype.ucwords=function(){return this.toLowerCase().replace(/\b[a-z]/g,function(a){return a.toUpperCase()})},Icegram.prototype.adjustFormContainerHeight=function(a){var b="";if(a.el.hasClass("ig_form_left")||a.el.hasClass("ig_form_right")){b=a.el.hasClass("ig_form_left")?"left":"right";var c=a.el.find(".ig_data").outerHeight()>a.el.find(".ig_form_container.layout_"+b).outerHeight()?a.el.find(".ig_data").outerHeight():a.el.find(".ig_form_container.layout_"+b).outerHeight();a.el.find(".ig_form_container").outerHeight(c)}},Icegram.prototype.hexToRgb=function(a){var b=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return b?{r:parseInt(b[1],16),g:parseInt(b[2],16),b:parseInt(b[3],16)}:null},Icegram.prototype.rgbToHsl=function(a,b,c){a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i;break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}h=Math.floor(100*h),e=Math.floor(100*e),d=Math.floor(60*d),0>d&&(d+=360)}return{h:d,s:e,l:h}},Icegram.prototype.hexToHsl=function(a){var b=window.icegram.hexToRgb(a);return window.icegram.rgbToHsl(b.r,b.g,b.b)},"function"!=typeof Object.create&&!function(){var a=function(){};Object.create=function(b){if(arguments.length>1)throw Error("Second argument not supported");if(null===b)throw Error("Cannot set a null [[Prototype]]");if("object"!=typeof b)throw TypeError("Argument must be an object");return a.prototype=b,new a}}(),void 0!==typeof jQuery.cookie&&!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});;function Icegram_Message_Type_Action_Bar(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Action_Bar.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Action_Bar.prototype.constructor=Icegram_Message_Type_Action_Bar,Icegram_Message_Type_Action_Bar.prototype.get_template_default=function(){return'<div class="icegram action_bar_{{=id}}" ><div class="ig_action_bar ig_container ig_{{=theme}} ig_no_hide" id="icegram_message_{{=id}}"><div class="ig_content ig_clear_fix"><div class="ig_close" id="ig_close_{{=id}}"><span></span></div><div class="ig_form_container layout_left"></div><div class="ig_data ig_clear_fix"><div class="ig_headline">{{=headline}}</div><div class="ig_message">{{=message}}</div></div><div class="ig_button">{{=label}}</div><div class="ig_form_container layout_right layout_bottom"></div></div></div></div>'},Icegram_Message_Type_Action_Bar.prototype.post_render=function(){void 0!=this.data.use_theme_defaults&&"yes"==this.data.use_theme_defaults||void 0!=this.data.bg_color&&""!=this.data.bg_color&&this.el.find(".ig_close").css("background-color",this.data.bg_color),"21"!==this.data.position&&0==jQuery("#ig_body_pushdown").length&&jQuery("body").prepend('<div id="ig_body_pushdown"></div>')},Icegram_Message_Type_Action_Bar.prototype.set_position=function(){switch(this.data.position){case"21":this.el.addClass("ig_bottom");break;case"01":default:this.el.addClass("ig_top")}},Icegram_Message_Type_Action_Bar.prototype.add_powered_by=function(a){this.el.addClass("ig_has_pwby").find(".ig_content").before('<div class="ig_powered_by" ><a href="'+a.link+'" target="_blank"><img src="'+a.logo+'" title="'+a.text+'"/></a></div>')},Icegram_Message_Type_Action_Bar.prototype.on_click=function(a){return a.data=a.data||{self:this},jQuery(a.target).filter(".ig_show .ig_close, .ig_show span").length?void a.data.self.hide():jQuery(a.target).filter(".ig_hide .ig_close, .ig_hide span").length?void a.data.self.show():void Icegram_Message_Type.prototype.on_click.apply(this,arguments)},Icegram_Message_Type_Action_Bar.prototype.post_show=function(){if("21"!==this.data.position){var a=this.el.outerHeight()||0;jQuery("#ig_body_pushdown").css("display","block").animate({height:a},500),jQuery("*",document.body).not(".ig_action_bar, .ig_popup, .ig_messenger, .ig_inline, .ig_overlay, .ig_sidebar, .ig_tab, .ig_interstitial ,#ig_body_pushdown ").each(function(){var b=window.getComputedStyle(this,null);("fixed"===b.position||"absolute"===b.position&&("BODY"===this.parentNode.nodeName||"HEADER"===this.nodeName))&&!isNaN(parseInt(b.top,10))&&this.getBoundingClientRect().top<=a&&jQuery(this).data("ig_fx_top",b.top).animate({top:parseInt(b.top,10)+a+"px"},300)})}},Icegram_Message_Type_Action_Bar.prototype.pre_hide=function(){"21"!==this.data.position&&(jQuery("#ig_body_pushdown").animate({height:0},300).css("display","none"),jQuery("*",document.body).not(".ig_action_bar, .ig_popup, .ig_messenger, .ig_inline, .ig_overlay, .ig_sidebar, .ig_tab, .ig_interstitial ,#ig_body_pushdown ").each(function(){"undefined"!=typeof jQuery(this).data("ig_fx_top")&&jQuery(this).animate({top:jQuery(this).data("ig_fx_top")},200)}))};;function Icegram_Message_Type_Messenger(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Messenger.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Messenger.prototype.constructor=Icegram_Message_Type_Messenger,Icegram_Message_Type_Messenger.prototype.get_template_default=function(){return'<div class="icegram ig_messenger ig_{{=theme}} ig_container ig_cta" id="icegram_message_{{=id}}"><div class="ig_content"><div class="ig_close" id="ig_close_{{=id}}"></div><div class="ig_data"><div class="ig_headline">{{=headline}}</div><div class="ig_body"><img class="ig_icon" src="{{=icon}}"/><div class="ig_message">{{=message}}</div></div><div class="ig_footer"></div></div></div></div>'},Icegram_Message_Type_Messenger.prototype.set_position=function(){switch(this.data.position){case"20":this.el.addClass("ig_left ig_bottom");break;case"22":default:this.el.addClass("ig_right ig_bottom")}},Icegram_Message_Type_Messenger.prototype.add_powered_by=function(a){this.el.addClass("ig_has_pwby").find(".ig_content").after('<div class="ig_powered_by"><a href="'+a.link+'" target="_blank">'+a.text+"</a></div>")};;function Icegram_Message_Type_Popup(a){Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Popup.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Popup.prototype.constructor=Icegram_Message_Type_Popup,Icegram_Message_Type_Popup.prototype.get_template_default=function(){return'<div id="icegram_message_{{=id}}" class="icegram ig_popup ig_{{=theme}} ig_container mfp-hide"><div class="ig_close" id="popup_box_close_{{=id}}"></div><div class="ig_clear_fix" data={{=id}}><div class="ig_bg_overlay"></div><div class="ig_form_container layout_left"></div><div class="ig_data ig_clear_fix"><div class="ig_headline">{{=headline}}</div><div class="ig_content"><div class="ig_message ig_clear_fix">{{=message}}</div></div><div class="ig_button" >{{=label}}</div></div><div class="ig_form_container layout_right layout_bottom"></div></div></div>'},Icegram_Message_Type_Popup.prototype.post_render=function(){void 0!=this.data.use_theme_defaults&&"yes"==this.data.use_theme_defaults||void 0!=this.data.bg_color&&""!=this.data.bg_color&&this.el.find(".ig_bg_overlay").css("border-color",this.data.bg_color)},Icegram_Message_Type_Popup.prototype.show=function(a,b){if(!this.is_visible()){var c=this,d="#icegram_message_"+this.data.id;this.animate("in"),jQuery.magnificPopup.open({items:{src:d,type:"inline"},showCloseBtn:!1,callbacks:{close:function(){b!==!0&&c.track("closed"),c.el.removeClass("ig_show")},open:function(){window.icegram.adjustFormContainerHeight(c)}}}),c.el.addClass("ig_show").removeClass("ig_hide"),b!==!0&&this.track("shown")}},Icegram_Message_Type_Popup.prototype.add_powered_by=function(a){setTimeout(function(){jQuery(".mfp-wrap").append('<div class="ig_powered_by"><a href="'+a.link+'" target="_blank">'+a.text+"</a></div>")},1e3+1e3*this.data.delay_time)},Icegram_Message_Type_Popup.prototype.hide=function(a,b){if(this.is_visible()){var c="#icegram_message_"+this.data.id,d=this;this.animate("out"),setTimeout(function(){d.el.addClass("ig_hide").removeClass("ig_show"),jQuery.magnificPopup.close({items:{src:c,type:"inline"}})},500)}},"undefined"==typeof jQuery.magnificPopup&&!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isIE7=-1!==c.indexOf("MSIE 7."),b.isIE8=-1!==c.indexOf("MSIE 8."),b.isLowIE=b.isIE7||b.isIE8,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),b.st.showCloseBtn&&(!b.st.closeBtnInside||b.currTemplate[b.currItem.type]===!0)&&b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||2!==c.which&&!c.ctrlKey&&!c.metaKey){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),!d&&"loading"===a&&(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(a,c){if(void 0===c||c===!1)return!0;if(e=a.split("_"),e.length>1){var d=b.find(p+"-"+e[0]);if(d.length>0){var f=e[1];"replaceWith"===f?d[0]!==c[0]&&d.replaceWith(c):"img"===f?d.is("img")?d.attr("src",c):d.replaceWith('<img src="'+c+'" class="'+d.attr("class")+'" />'):d.attr(e[1],c)}}else b.find(p+"-"+a).html(c)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&times;</button>',tClose:"Close (Esc)",tLoading:"Loading..."}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,H&&clearInterval(H),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){H&&clearInterval(H),H=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(H),c++,3===c?e(10):40===c?e(50):100===c&&e(500),void 0)},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:I(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(H&&clearInterval(H),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var J,K=function(){return void 0===J&&(J=void 0!==document.createElement("p").style.MozTransform),J};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return K()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var L="retina";a.magnificPopup.registerModule(L,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+L,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+L,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});;function Icegram_Message_Type_Toast(a){this.width=300,this.sticky=!1,this.duration=1e4,Icegram_Message_Type.apply(this,arguments)}Icegram_Message_Type_Toast.prototype=Object.create(Icegram_Message_Type.prototype),Icegram_Message_Type_Toast.prototype.constructor=Icegram_Message_Type_Toast,Icegram_Message_Type_Toast.prototype.get_template_default=function(){return'<li class="icegram ig_toast ig_container ig_{{=theme}} ig_cta" data="{{=id}}" id="icegram_message_{{=id}}"><div class="ig_wrapper"><div class="ig_content"><div class="ig_base"></div><div class="ig_line"></div><img class="ig_icon" src="{{=icon}}"/><div class="ig_headline">{{=headline}}</div><div class="ig_message">{{=message}}</div></div></div></li>'},Icegram_Message_Type_Toast.prototype.pre_render=function(){if("10"!=this.data.position&&"12"!=this.data.position||(this.data.position="20"),jQuery("ul#"+this.data.position).length)var a=jQuery("ul#"+this.data.position);else{var a=jQuery('<ul id="'+this.data.position+'"></ul>').addClass("ig_toast_block").appendTo(this.root_container).hide();a.width(this.width),"00"==this.data.position?a.css({top:"0",left:"0"}).addClass("ig_left").addClass("ig_top"):"01"==this.data.position?a.css({top:"0",left:"50%",margin:"5px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_top"):"02"==this.data.position?a.css({top:"0",right:"0"}).addClass("ig_right").addClass("ig_top"):"20"==this.data.position?a.css({bottom:"0",left:"0"}).addClass("ig_left").addClass("ig_bottom"):"21"==this.data.position?a.css({bottom:"0",left:"50%",margin:"5px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_bottom"):"22"==this.data.position?a.css({bottom:"0",right:"0"}).addClass("ig_right").addClass("ig_bottom"):"11"==this.data.position&&a.css({top:"50%",left:"50%",margin:"-"+this.width/2+"px 0 0 -"+this.width/2+"px"}).addClass("ig_center").addClass("ig_top")}this.root_container=a},Icegram_Message_Type_Toast.prototype.pre_show=function(){!this.root_container.hasClass("active")&&this.root_container.addClass("active").show()},Icegram_Message_Type_Toast.prototype.post_show=function(){var a=this;!this.sticky&&this.duration>0&&setTimeout(function(){a.hide(),a.root_container.children().length||a.root_container.removeClass("active").hide()},this.duration)};
trunk/assets/js/main.min.js ADDED
@@ -0,0 +1 @@
 
1
+ function load_scripts_and_css(a){var b={};jQuery.each(a.css,function(a,c){b["ig_css_"+a]=1}),jQuery.each(a.scripts,function(a,c){b["ig_script_"+a]=1});var c=function(c){var d=c.target.id||"";""!=d&&b.hasOwnProperty(d)&&delete b[d],jQuery.isEmptyObject(b)&&(jQuery(window).trigger("scripts_loaded.icegram"),jQuery(function(){window.icegram=new Icegram,window.icegram.init(a),jQuery("body").addClass("ig_"+icegram_pre_data.post_obj.device),icegram_timing.end=Date.now()}))};jQuery.each(a.css,function(a,b){jQuery("<link>").attr("type","text/css").attr("rel","stylesheet").attr("id","ig_css_"+a).attr("media","all").appendTo("head").on("load",c).attr("href",b)});var d=a.scripts.shift();jQuery("<script>").attr("type","text/javascript").attr("id","ig_script_0").appendTo("body").on("load",function(b){c(b),jQuery.each(a.scripts,function(a,b){jQuery("<script>").attr("type","text/javascript").attr("id","ig_script_"+(a+1)).appendTo("body").on("load",c).attr("src",b)})}).attr("src",d)}try{var icegram_data,icegram_timing={};icegram_pre_data.post_obj.referral_url=window.location.href,icegram_timing.start=Date.now(),"yes"===icegram_pre_data.post_obj.cache_compatibility?(jQuery.ajax({url:icegram_pre_data.ajax_url,type:"POST",async:!0,cache:!1,data:icegram_pre_data.post_obj,dataType:"json",success:function(a){a?(icegram_data=a,load_scripts_and_css(icegram_data)):jQuery(".ig_inline_container:empty").remove()},error:function(a){}}),jQuery(window).on("init.icegram",function(a,b){b&&jQuery.each(b.messages,function(a,b){b.data.assets&&(jQuery.each(b.data.assets.styles||[],function(a,b){var c=jQuery("<div/>").html(b).find("link").attr("href");c&&0==jQuery('link[href="'+c+'"]').length&&jQuery("body").append(b)}),jQuery.each(b.data.assets.scripts||[],function(a,b){var c=jQuery("<div/>").html("<script "+b).find("script").attr("src");c&&0==jQuery('script[src="'+c+'"]').length&&jQuery("body").append("<script "+b)}))})})):"undefined"!=typeof icegram_data&&load_scripts_and_css(icegram_data),jQuery(window).on("init.icegram",function(a,b){b&&jQuery.each(b.messages,function(a,b){"yes"==b.data.use_custom_code&&"undefined"!=typeof b.data.custom_js&&jQuery("body").append(b.data.custom_js)}),jQuery("body").find(".trigger_onclick").length&&jQuery.each(jQuery("body").find(".trigger_onclick"),function(a,c){var d="",e=jQuery(c).data("campaigns"),f=b.get_message_by_campaign_id(e);jQuery.each(f,function(a,b){d+="icegram.get_message_by_id("+b.data.id+").show();"}),jQuery(c).children().length?jQuery(c).children().attr("onclick",d):jQuery(c).attr("onclick",d)})})}catch(err){console.log(err)}
trunk/classes/class-icegram-cache.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+
4
+ if ( !class_exists( 'Icegram_Cache' ) ) {
5
+
6
+ /*
7
+ // Example usage
8
+ $cache = new Icegram_Cache('category', 14 * 86400);
9
+ $val = $cache->get( $key );
10
+ if ( $val === null ) {
11
+ // Not in cache, compute
12
+ $val = doyourprocess();
13
+ $cache->set( $key, $val );
14
+ }
15
+ // Now use the $val
16
+
17
+ function cleanup() {
18
+ $cache = new Icegram_Cache('category', 14 * 86400);
19
+ $cache->cleanup();
20
+ }
21
+
22
+ // For cleanup
23
+ wp_schedule_event( time(), 'daily', array($this, 'cleanup') );
24
+ */
25
+
26
+ class Icegram_Cache {
27
+
28
+ var $base_dir;
29
+ var $expire_after;
30
+ var $enabled;
31
+ var $_group;
32
+ var $_hashes;
33
+
34
+ public function set( $key, $data ) {
35
+ if (!$this->enabled) return false;
36
+ $res = file_put_contents($this->_file( $key ), serialize($data));
37
+ return ( $res === false ) ? false : true;
38
+ }
39
+
40
+ public function get( $key ) {
41
+ if (!$this->enabled) return null;
42
+ if ($this->_exists( $key )) {
43
+ return unserialize( file_get_contents( $this->_file( $key )));
44
+ }
45
+ return null;
46
+ }
47
+
48
+ public function delete( $key ) {
49
+ if (!$this->enabled) return true;
50
+ if ($this->_exists( $key )) {
51
+ return unlink( $this->_file( $key ) );
52
+ }
53
+ return true;
54
+ }
55
+
56
+ public function cleanup( ) {
57
+ if (!$this->enabled) return true;
58
+ foreach (glob($this->base_dir . $this->_group . "*") as $filename) {
59
+ if (filemtime($filename) < time() - $this->expire_after) {
60
+ @unlink($filename);
61
+ }
62
+ }
63
+ return true;
64
+ }
65
+
66
+ private function _exists( $key ) {
67
+ return (is_file( $this->_file( $key ) ) );
68
+ }
69
+
70
+ private function _file( $key ) {
71
+ return $this->base_dir . $this->_group . '_' . $this->_hash( $key );
72
+ }
73
+
74
+ private function _hash( $key ) {
75
+ if (!array_key_exists($key, $this->_hashes)) {
76
+ $this->_hashes[ $key ] = md5($key);
77
+ }
78
+ return $this->_hashes[ $key ];
79
+ }
80
+
81
+
82
+ public function __construct( $group = '', $expire_after = 86400, $base_dir = '' ) {
83
+
84
+ $this->_group = sanitize_key($group);
85
+ $this->base_dir = $base_dir;
86
+ $this->expire_after = $expire_after;
87
+ $this->_hashes = array();
88
+
89
+ if (empty($this->base_dir)) {
90
+ $uploads = wp_upload_dir();
91
+ $uploads_base_dir = trailingslashit( $uploads['basedir'] );
92
+ $this->base_dir = $uploads_base_dir . 'igcache/';
93
+ }
94
+
95
+ if (!is_dir( $this->base_dir )) {
96
+ if ( false === mkdir( $this->base_dir ) ) {
97
+ $this->enabled = false;
98
+ return;
99
+ }
100
+ }
101
+ $this->base_dir = trailingslashit( $this->base_dir );
102
+ $this->enabled = true;
103
+ }
104
+ }
105
+
106
+ }
trunk/classes/class-icegram-campaign-admin.php ADDED
@@ -0,0 +1,684 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ /**
4
+ * Icegram Campaign Admin class
5
+ */
6
+ if ( !class_exists( 'Icegram_Campaign_Admin' ) ) {
7
+ class Icegram_Campaign_Admin {
8
+
9
+ var $default_target_rules;
10
+ var $site_url;
11
+ function __construct() {
12
+
13
+ add_action( 'add_meta_boxes', array( &$this, 'add_campaigns_metaboxes' ), 0 );
14
+ add_action( 'save_post', array( &$this, 'save_campaign_settings' ), 10, 2 );
15
+ add_action( 'wp_ajax_icegram_json_search_messages', array( &$this, 'icegram_json_search_messages' ) );
16
+ add_action( 'wp_ajax_get_message_action_row', array( &$this, 'get_message_action_row' ) );
17
+ // add_filter( 'wp_default_editor', create_function('', 'return "html";') );
18
+ add_action( 'wp_ajax_save_campaign_preview', array( &$this, 'save_campaign_preview' ) );
19
+ add_action( 'icegram_campaign_target_rules', array( &$this, 'icegram_add_campaign_target_rules' ), 10, 2 );
20
+ add_filter('icegram_campaign_messages' ,array( &$this, 'get_icegram_campaign_messages' ) ,10,2 );
21
+ //duplicate campaign
22
+ add_filter( 'post_row_actions', array(&$this , 'add_campaign_action'), 10, 2 );
23
+ add_action('admin_init', array(&$this ,'duplicate_campaign') ,10, 1);
24
+
25
+ $this->site_url = home_url().'/';
26
+
27
+ $this->default_target_rules = apply_filters( 'icegram_campaign_default_rules',
28
+ array ( 'homepage' => 'yes',
29
+ 'when' => 'always',
30
+ 'mobile' => 'yes',
31
+ 'tablet' => 'yes',
32
+ 'laptop' => 'yes',
33
+ 'logged_in' => 'all'
34
+ )
35
+ );
36
+
37
+ }
38
+ public static function getInstance(){
39
+ static $ig_campaign_admin = null;
40
+ if (null === $ig_campaign_admin) {
41
+ $ig_campaign_admin = new Icegram_Campaign_Admin();
42
+ }
43
+ return $ig_campaign_admin;
44
+ }
45
+
46
+ // Initialize campaign metabox
47
+ function add_campaigns_metaboxes() {
48
+ $meta_box_title = __( 'Message', 'icegram' );
49
+ add_meta_box( 'campaign_data', $meta_box_title, array( &$this, 'campaign_data_content' ), 'ig_campaign', 'normal', 'default' );
50
+ add_meta_box( 'campaign_target_rules', __( 'Targeting Rules', 'icegram' ), array( &$this, 'campaign_target_rules_content' ), 'ig_campaign', 'normal' );
51
+ }
52
+ // Display list of messages of campaign
53
+ function campaign_data_content() {
54
+ global $post, $icegram;
55
+ $ig_message_admin = Icegram_Message_Admin::getInstance();
56
+
57
+ $campaign_box = '<select id="icegram_messages" name="icegram_messages[]" class="ajax_chosen_select_messages" data-placeholder="' . __( 'Search to add / Create new&hellip;', 'icegram' ) . '">';
58
+ $campaign_box .= '<option value=""></option>';
59
+ foreach ( $icegram->message_types as $message ) {
60
+ $campaign_box .= '<option value="'.$message['type'].'">'.__( 'Create new', 'icegram' ).' '.$message['name'].' ...</option>';
61
+ }
62
+ $campaign_box .= '</select>';
63
+ $campaign_box .= '<div class="button button-primary campaign_preview">' . __( 'Preview', 'icegram' ) . '</div>';
64
+
65
+ $title = '<label class="options_header" for="icegram_messages"><strong>' . __( 'Message', 'icegram' ) . '</strong></label>';
66
+ ?>
67
+ <div class="campaign_box"><?php echo $title; ?> &mdash; <?php echo $campaign_box; ?></div>
68
+ <div style="margin: 8px -12px 12px -12px">
69
+ <hr/>
70
+ </div>
71
+ <div class="campaign_target_rules_panel">
72
+ <div class="options_group">
73
+ <div class="messages-list">
74
+ <table class="messages_list_table">
75
+ <?php
76
+ $this->message_list_table_header();
77
+ ?>
78
+ <tbody>
79
+ <?php
80
+ $messages = array();
81
+ $messages = apply_filters('icegram_campaign_messages', $messages, $post->ID);
82
+ $icegram_message_meta_key = apply_filters('icegram_message_meta_key', 'messages');
83
+ if ( !empty( $messages ) ) {
84
+ foreach ( $messages as $row => $message ) {
85
+ $message_title = get_the_title( $message['id'] );
86
+ $message_data = get_post_meta( $message['id'], 'icegram_message_data', true );
87
+ $message_type = ( !empty( $message_data['type'] ) ) ? $message_data['type'] : '';
88
+ $class = ( !empty( $icegram->message_types[ $message_type ] ) ) ? $message_type : 'unknown';
89
+ //if ( empty( $icegram->message_types[ $message_type ] ) ) continue;
90
+ ?>
91
+ <tr class="form-field message-row" value="<?php echo $message['id']; ?>">
92
+ <td class="message_header">
93
+ <label class="message_header_label <?php echo "ig_".$message_data['type'] ." " .$class; ?>"><?php echo $class; ?></label>
94
+ </td>
95
+ <td class="message_title">
96
+ <div class="message-title-text"><?php echo $message_title; ?></div>
97
+ <input type="text" class="message-title-input" name="message_data[<?php echo $message['id']; ?>][post_title]" value="<?php echo $message_title; ?>" placeholder="<?php echo __( 'Give this message a name for your own reference', 'icegram' ); ?>" style="display: none;">
98
+ </td>
99
+ <td class="message_seconds">
100
+ <input type="hidden" name="<?php echo $icegram_message_meta_key .'['.$row; ?>][id]" value="<?php echo $message['id']; ?>" />
101
+ <input type="number" class="seconds-text" name="<?php echo $icegram_message_meta_key .'['.$row; ?>][time]" min="-1" value="<?php echo ( !empty( $message['time'] ) ) ? $message['time'] : 0; ?>" size="3" />
102
+ <?php _e( ' sec', 'icegram' )?>
103
+ </td>
104
+ <td class="action_links">
105
+ <span class="actions message_edit" title="<?php _e( 'Edit Message', 'icegram' ); ?>" ></span>
106
+ <span class="actions message_delete" title="<?php _e( 'Remove from Campaign', 'icegram' ); ?>" ></span>
107
+ </td>
108
+ </tr>
109
+ <tr id="message_row_<?php echo $message['id']; ?>" class="message-edit-row" style="display: none;">
110
+ <td colspan="4">
111
+ <?php
112
+ $ig_message_admin->message_form_fields( '', array( 'message_id' => $message['id'] ) );
113
+ ?>
114
+ </td>
115
+ </tr>
116
+ <?php
117
+ }
118
+ }
119
+ ?>
120
+ </tbody>
121
+ </table>
122
+ <div class="empty_campaign">
123
+ <?php
124
+ echo __( 'No messages yet. Use search / create bar above to add messages to this campaign.', 'icegram' );
125
+ ?>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ <?php
131
+ }
132
+
133
+ function get_icegram_campaign_messages($messages, $campaign_id){
134
+ $messages = get_post_meta($campaign_id, 'messages', true);
135
+ return $messages;
136
+ }
137
+ // Campaign targeting rules metabox
138
+ function campaign_target_rules_content() {
139
+ global $post;
140
+
141
+ wp_nonce_field( 'icegram_campaign_save_data', 'icegram_campaign_meta_nonce' );
142
+ $campaign_target_rules = get_post_meta( $post->ID, 'icegram_campaign_target_rules', true );
143
+
144
+ if( empty( $campaign_target_rules ) ) {
145
+ $campaign_target_rules = $this->default_target_rules;
146
+ }
147
+
148
+ ?>
149
+ <span class="target_rules_desc"> <em><?php echo 'Messages in this campaign will be shown when all these rules match...' ?></em></span>
150
+ <div class="campaign_target_rules_panel">
151
+ <?php do_action( 'icegram_campaign_target_rules', $post->ID, $campaign_target_rules ); ?>
152
+ </div>
153
+ <?php
154
+ }
155
+
156
+ // Display setting fields for campaign targeting rules
157
+ function icegram_add_campaign_target_rules( $campaign_id, $campaign_target_rules ) {
158
+ global $wp_roles;
159
+ ?>
160
+ <div class="options_group" id="campaign_target_rules_where">
161
+ <p class="form-field">
162
+ <label class="options_header"><?php _e( 'Where?', 'icegram' ); ?></label>
163
+ <label for="where_sitewide">
164
+ <input type="checkbox" name="campaign_target_rules[sitewide]" id="where_sitewide" value="yes" <?php ( !empty( $campaign_target_rules['sitewide'] ) ) ? checked( $campaign_target_rules['sitewide'], 'yes' ) : ''; ?> />
165
+ <?php _e( 'Sitewide', 'icegram' ); ?>
166
+ </label>
167
+ </p>
168
+ <p class="form-field" <?php echo ( !empty( $campaign_target_rules['sitewide'] ) && $campaign_target_rules['sitewide'] == 'yes' ) ? '' : 'style="display: none;"'; ?>>
169
+ <label class="options_header"></label>
170
+ <?php
171
+ 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>';
172
+ foreach ( get_pages() as $page ) {
173
+ echo '<option value="' . $page->ID . '"';
174
+ if( !empty( $campaign_target_rules['exclude_page_id'] ) ) {
175
+ echo selected( in_array( $page->ID, $campaign_target_rules['exclude_page_id'] ) );
176
+ }
177
+ echo '>' . $page->post_title . '</option>';
178
+ }
179
+ echo '</select>';
180
+ ?>
181
+ </p>
182
+ <p class="form-field">
183
+ <label class="options_header">&nbsp;</label>
184
+ <label for="where_homepage">
185
+ <input type="checkbox" name="campaign_target_rules[homepage]" id="where_homepage" value="yes" <?php ( !empty( $campaign_target_rules['homepage'] ) ) ? checked( $campaign_target_rules['homepage'], 'yes' ) : ''; ?> />
186
+ <?php _e( 'Homepage', 'icegram' ); ?>
187
+ </label>
188
+ </p>
189
+ <p class="form-field">
190
+ <label class="options_header">&nbsp;</label>
191
+ <label for="where_other_page">
192
+ <input type="checkbox" name="campaign_target_rules[other_page]" id="where_other_page" value="yes" <?php ( !empty( $campaign_target_rules['other_page'] ) ) ? checked( $campaign_target_rules['other_page'], 'yes' ) : ''; ?> />
193
+ <?php _e( 'Selected pages', 'icegram' ); ?>
194
+ </label>
195
+ </p>
196
+ <p class="form-field" <?php echo ( !empty( $campaign_target_rules['other_page'] ) && $campaign_target_rules['other_page'] == 'yes' ) ? '' : 'style="display: none;"'; ?>>
197
+ <label class="options_header">&nbsp;</label>
198
+ <?php
199
+ echo '<select name="page_id[]" id="where_page_id" data-placeholder="' . __( 'Select a page&hellip;', 'icegram' ) . '" style="min-width:300px;" class="icegram_chosen_page" multiple>';
200
+ foreach ( get_pages() as $page ) {
201
+ echo '<option value="' . $page->ID . '"';
202
+ if( !empty( $campaign_target_rules['page_id'] ) ) {
203
+ echo selected( in_array( $page->ID, $campaign_target_rules['page_id'] ) );
204
+ }
205
+ echo '>' . $page->post_title . '</option>';
206
+ }
207
+ echo '</select>';
208
+ ?>
209
+ </p>
210
+ <p class="form-field">
211
+ <label class="options_header">&nbsp;</label>
212
+ <label for="where_local_url">
213
+ <input type="checkbox" name="campaign_target_rules[local_url]" id="where_local_url" value="yes" <?php ( !empty( $campaign_target_rules['local_url'] ) ) ? checked( $campaign_target_rules['local_url'], 'yes' ) : ''; ?> />
214
+ <?php _e( 'Specific URLs on this site', 'icegram' ); ?>
215
+ </label>
216
+ </p>
217
+ <p class="form-field local_url" <?php echo ( !empty( $campaign_target_rules['local_url'] ) && $campaign_target_rules['local_url'] == 'yes' ) ? '' : 'style="display: none;"'; ?>>
218
+ <?php
219
+ if(!empty($campaign_target_rules['local_urls'])){
220
+ foreach ($campaign_target_rules['local_urls'] as $url) {?>
221
+ <span><label class="options_header"><span id="valid-field"> </span></label>
222
+ <input type="text" data-option="local_url" class="url_input_field" name="campaign_target_rules[local_urls][]" value="<?php echo $this->site_url.$url ;?>"/><span class="delete-url"></span></span>
223
+ <?php
224
+ }
225
+ }else{ ?>
226
+ <span><label class="options_header"><span id="valid-field"> </span></label>
227
+ <input type="text" data-option="local_url" class="url_input_field" name="campaign_target_rules[local_urls][]" value="<?php echo $this->site_url.'*' ;?>"/><span class="delete-url"></span></span>
228
+ <?php }
229
+ ?>
230
+ <label class="options_header " id="add_local_url_row_label">&nbsp;</label><span id="add-url-icon"> </span><a class="campaign_add_url" id="add_local_url_row" href="#"><?php _e( ' Add another', 'icegram' ); ?></a>
231
+ </p>
232
+
233
+ <?php
234
+ do_action( 'icegram_after_campaign_where_rule', $campaign_id, $campaign_target_rules );
235
+ ?>
236
+ <p class="form-field">
237
+ <label class="options_header">&nbsp;</label>
238
+ <span class="campaign_shortcode light">
239
+ <?php echo sprintf(__( 'Additionally you can insert <code>[%s]</code> wherever you want to run this campaign.', 'icegram' ), 'icegram campaigns="' .$campaign_id . '"' ); ?>
240
+ </span>
241
+ </p>
242
+
243
+ </div>
244
+ <div class="options_group" id="campaign_target_rules_when">
245
+ <p class="form-field">
246
+ <label class="options_header"><?php _e( 'When?', 'icegram' ); ?></label>
247
+ <label for="when_always">
248
+ <input type="radio" class="schedule_rule" name="campaign_target_rules[when]" id="when_always" value="always" <?php ( !empty( $campaign_target_rules['when'] ) ) ? checked( $campaign_target_rules['when'], 'always' ) : ''; ?> />
249
+ <?php _e( 'Always', 'icegram' ); ?>
250
+ </label>
251
+ </p>
252
+ <p class="form-field">
253
+ <label class="options_header">&nbsp;</label>
254
+ <label for="when_schedule">
255
+ <input type="radio" class="schedule_rule" name="campaign_target_rules[when]" id="when_schedule" value="schedule" <?php ( !empty( $campaign_target_rules['when'] ) ) ? checked( $campaign_target_rules['when'], 'schedule' ) : ''; ?> />
256
+ <?php _e( 'Schedule', 'icegram' ); ?>
257
+ <span class="form-field" id="date_picker" <?php echo ( !empty( $campaign_target_rules['when'] ) && $campaign_target_rules['when'] == 'schedule' ) ? '' : 'style="display: none;"'; ?>>
258
+ <label class="date_picker">
259
+ <input type="text" class="date-picker" name="campaign_target_rules[from]" value="<?php echo ( !empty( $campaign_target_rules['from'] ) ) ? esc_attr( $campaign_target_rules['from'] ) : ''; ?>" placeholder="<?php _e( 'From&hellip;', 'icegram' );?>" />
260
+ </label>
261
+ <label class="date_picker">
262
+ <input type="text" class="date-picker" name="campaign_target_rules[to]" value="<?php echo ( !empty( $campaign_target_rules['to'] ) ) ? esc_attr( $campaign_target_rules['to'] ) : ''; ?>" placeholder="<?php _e( 'To&hellip;', 'icegram' );?>" />
263
+ </label>
264
+ </span>
265
+ </label>
266
+ </p>
267
+ <?php
268
+ do_action( 'icegram_after_campaign_when_rule', $campaign_id, $campaign_target_rules );
269
+ ?>
270
+ </div>
271
+ <div class="options_group" id="campaign_target_rules_device">
272
+ <p class="form-field">
273
+ <label class="options_header"><?php _e( 'Device?', 'icegram' ); ?></label>
274
+ <label for="device_mobile" class="device" title="<?php _e( 'Mobile / Smartphones', 'icegram' ); ?>">
275
+ <input type="checkbox" name="campaign_target_rules[mobile]" id="device_mobile" value="yes" <?php ( !empty( $campaign_target_rules['mobile'] ) ) ? checked( $campaign_target_rules['mobile'], 'yes' ) : ''; ?> />
276
+ <span class="device_mobile"></span>
277
+ </label>
278
+ <label for="device_tablet" class="device" title="<?php _e( 'Tablet', 'icegram' ); ?>">
279
+ <input type="checkbox" name="campaign_target_rules[tablet]" id="device_tablet" value="yes" <?php ( !empty( $campaign_target_rules['tablet'] ) ) ? checked( $campaign_target_rules['tablet'], 'yes' ) : ''; ?> />
280
+ <span class="device_tablet"></span>
281
+ </label>
282
+ <label for="device_laptop" class="device" title="<?php _e( 'Desktop / Laptop', 'icegram' ); ?>">
283
+ <input type="checkbox" name="campaign_target_rules[laptop]" id="device_laptop" value="yes" <?php ( !empty( $campaign_target_rules['laptop'] ) ) ? checked( $campaign_target_rules['laptop'], 'yes' ) : ''; ?> />
284
+ <span class="device_laptop"></span>
285
+ </label>
286
+ </p>
287
+ </div>
288
+ <div class="options_group" id="campaign_target_rules_users">
289
+ <p class="form-field">
290
+ <label class="options_header"><?php _e( 'Who?', 'icegram' ); ?></label>
291
+ <label for="users_all">
292
+ <input type="radio" name="campaign_target_rules[logged_in]" id="users_all" value="all" <?php ( !empty( $campaign_target_rules['logged_in'] ) ) ? checked( $campaign_target_rules['logged_in'], 'all' ) : ''; ?> />
293
+ <?php _e( 'All users', 'icegram' ); ?>
294
+ </label>
295
+ </p>
296
+ <p class="form-field">
297
+ <label class="options_header">&nbsp;</label>
298
+ <label for="users_logged_in">
299
+ <input type="radio" name="campaign_target_rules[logged_in]" id="users_logged_in" value="logged_in" <?php ( !empty( $campaign_target_rules['logged_in'] ) ) ? checked( $campaign_target_rules['logged_in'], 'logged_in' ) : ''; ?> />
300
+ <?php _e( 'Logged in users only', 'icegram' ); ?>
301
+ </label>
302
+ </p>
303
+
304
+ <div class="user_roles">
305
+ <?php
306
+ if ( !empty( $campaign_target_rules['logged_in'] ) && ($campaign_target_rules['logged_in'] == 'all' || $campaign_target_rules['logged_in'] == 'not_logged_in') ) {
307
+ $campaign_logged_in_user_style = 'style="display: none;"';
308
+ } else {
309
+ $campaign_logged_in_user_style = 'style="display: block;"';
310
+ }
311
+ ?>
312
+ <p class="form-field" <?php echo $campaign_logged_in_user_style; ?>>
313
+ <label class="options_header">&nbsp;</label>
314
+ <?php
315
+ if ( isset( $wp_roles ) ) {
316
+ $wp_roles = new WP_Roles();
317
+ $roles = $wp_roles->get_names();
318
+
319
+ echo '<select name="campaign_target_rules[users][]" id="users_roles" data-placeholder="' . __( 'Select a user role&hellip;', 'icegram' ) . '" style="min-width:300px;" class="icegram_chosen_page" multiple>';
320
+ foreach ( $roles as $role_value => $role_name ) {
321
+ echo '<option value="' . $role_value . '"';
322
+ if( !empty( $campaign_target_rules['users'] ) ) {
323
+ echo selected( in_array( $role_value, $campaign_target_rules['users'] ) );
324
+ }
325
+ echo '>' . $role_name . '</option>';
326
+ }
327
+ echo '</select>';
328
+ }
329
+ ?>
330
+ </div>
331
+ <p class="form-field">
332
+ <label class="options_header">&nbsp;</label>
333
+ <label for="users_not_logged_in">
334
+ <input type="radio" name="campaign_target_rules[logged_in]" id="users_not_logged_in" value="not_logged_in" <?php ( !empty( $campaign_target_rules['logged_in'] ) ) ? checked( $campaign_target_rules['logged_in'], 'not_logged_in' ) : ''; ?> />
335
+ <?php _e( 'Not Logged in users', 'icegram' ); ?>
336
+ </label>
337
+ </p>
338
+ </div>
339
+ <?php $expiry_options_for_shown = array( 'current_session' => __('Current Session' ,'icegram'),
340
+ '+50 years' => __('Never' ,'icegram'),
341
+ 'today' => __('Today' ,'icegram'),
342
+ '+1 week' => __('One week' ,'icegram') ,
343
+ '+2 week' => __('Two weeks' ,'icegram'),
344
+ '+1 month' => __('One Month ' ,'icegram'),
345
+ '+3 months' => __('Three Months ' ,'icegram') ,
346
+ '+1 year' => __('One year' ,'icegram') ,
347
+ '+2 years' => __('Two Years' ,'icegram'));
348
+ $expiry_options_for_clicked = array( '+50 years' => __('Never' ,'icegram'),
349
+ 'current_session' => __('Current Session' ,'icegram'),
350
+ 'today' => __('Today' ,'icegram'),
351
+ '+1 week' => __('One week' ,'icegram') ,
352
+ '+2 week' => __('Two weeks' ,'icegram'),
353
+ '+1 month' => __('One Month ' ,'icegram'),
354
+ '+3 months' => __('Three Months ' ,'icegram') ,
355
+ '+1 year' => __('One year' ,'icegram') ,
356
+ '+2 years' => __('Two Years' ,'icegram'));
357
+
358
+ ?>
359
+ <div class="options_group" id="campaign_target_rules_retargeting">
360
+ <?php
361
+ $html_content = '<p class="form-field">
362
+ <label class="options_header">'.__( 'Retargeting', 'icegram' ).'</label>
363
+ <label for="retargeting">
364
+ <input type="checkbox" name="campaign_target_rules[retargeting]" id="retargeting" value="yes"'.(( !empty( $campaign_target_rules['retargeting'] ) ) ? checked( $campaign_target_rules['retargeting'], 'yes', false ) : '').'/>';
365
+ $html_content .= __(' Once shown, do NOT show this campaign again for ', 'icegram' );
366
+ $html_content .= '<select name="campaign_target_rules[expiry_time]">';
367
+ foreach($expiry_options_for_shown as $key => $option){
368
+ ?>
369
+ <?php $html_content .= '<option value="'.$key.'"'.((!empty($campaign_target_rules['expiry_time'])) ? selected( $campaign_target_rules['expiry_time'], $key, false ) : "").'>'.$option.'</option>';
370
+ }
371
+ $html_content .= '</select>';
372
+ $html_content .= '</label>';
373
+ $campaign_target_rules_retargeting = apply_filters('icegram_campaign_target_rules_retargeting' , array( 'html' => $html_content, 'campaign_target_rules' => $campaign_target_rules, 'expiry_options_for_shown' => $expiry_options_for_shown));
374
+ echo $campaign_target_rules_retargeting['html'];
375
+ ?>
376
+ </p>
377
+ <p class="form-field">
378
+ <label class="options_header">&nbsp;</label>
379
+ <label for="retargeting_clicked">
380
+ <input type="checkbox" name="campaign_target_rules[retargeting_clicked]" id="retargeting_clicked" value="yes" <?php ( !empty( $campaign_target_rules['retargeting_clicked'] ) ) ? checked( $campaign_target_rules['retargeting_clicked'], 'yes' ) : ''; ?> />
381
+ <?php _e( 'Once CTA is clicked, do NOT show this campaign again for', 'icegram' ); ?>
382
+ <select name="campaign_target_rules[expiry_time_clicked]">
383
+ <?php foreach($expiry_options_for_clicked as $key => $option){
384
+ ?>
385
+ <option value="<?php echo $key; ?>" <?php (!empty($campaign_target_rules['expiry_time_clicked'])) ? selected( $campaign_target_rules['expiry_time_clicked'], $key ) : ''; ?>><?php echo $option; ?></option>
386
+ <?php
387
+ }
388
+ ?>
389
+ </select>
390
+ </label>
391
+ </p>
392
+ </div>
393
+ <?php
394
+ }
395
+
396
+ // Return json encoded messages for searched term
397
+ function icegram_json_search_messages( $x = '' ) {
398
+ global $icegram;
399
+ check_ajax_referer( 'search-messages', 'security' );
400
+
401
+ header( 'Content-Type: application/json; charset=utf-8' );
402
+
403
+ $term = ( string ) urldecode( stripslashes( strip_tags( $_GET['term'] ) ) );
404
+ $post_types = array('ig_message');
405
+
406
+ if ( empty( $term ) ) die();
407
+
408
+ if ( is_numeric( $term ) ) {
409
+
410
+ $args = array(
411
+ 'post_type' => $post_types,
412
+ 'post_status' => 'publish',
413
+ 'posts_per_page' => -1,
414
+ 'post__in' => array( 0, $term ),
415
+ 'fields' => 'ids'
416
+ );
417
+
418
+ $posts = get_posts( $args );
419
+
420
+ } else {
421
+
422
+ $args = array(
423
+ 'post_type' => $post_types,
424
+ 'post_status' => 'publish',
425
+ 'posts_per_page' => -1,
426
+ 's' => $term,
427
+ 'fields' => 'ids'
428
+ );
429
+
430
+ $posts = get_posts( $args );
431
+
432
+ }
433
+
434
+ $found_messages = array();
435
+ if ( $posts ) {
436
+
437
+ foreach ( $posts as $post ) {
438
+
439
+ $message_title = get_the_title( $post );
440
+ $message_data = get_post_meta( $post, 'icegram_message_data', true );
441
+ $message_type = ( !empty( $icegram->message_types[ $message_data['type'] ]['type'] ) ) ? $icegram->message_types[ $message_data['type'] ]['type'] : '';
442
+ $found_messages[ $post ] = $message_type . ' &mdash; ' . $message_title;
443
+
444
+ }
445
+ $found_messages[''] = __( '- - - - - - - - - - - - - - - - - - - - - - - - - -', 'icegram' );
446
+ }
447
+
448
+ foreach ( $icegram->message_types as $message ) {
449
+ $found_messages[ $message['type'] ] = __( 'Create new', 'icegram' ) . ' ' . $message['name'] . ' ...';
450
+ }
451
+ ob_clean();
452
+ $found_messages = apply_filters( 'icegram_searched_messages', $found_messages, $term );
453
+ echo json_encode( $found_messages );
454
+ die();
455
+ }
456
+
457
+ // Constant table header for campaign
458
+ function message_list_table_header() {
459
+ ?>
460
+ <thead>
461
+ <tr class="form-field message-row-header">
462
+ <th class="message_header"><?php _e( 'Type', 'icegram' ); ?></th>
463
+ <th class="message_title"><?php _e( 'Name', 'icegram' ); ?></th>
464
+ <th class="message_seconds"><?php _e( 'Show after', 'icegram' ); ?></th>
465
+ <th class="action_links"><?php _e( 'Actions', 'icegram' ); ?></th>
466
+ </tr>
467
+ </thead>
468
+ <?php
469
+ }
470
+
471
+ // Return html for message row in json encoded format
472
+ function get_message_action_row() {
473
+
474
+ $ig_message_admin = Icegram_Message_Admin::getInstance();
475
+ $ig_message_admin->is_icegram_editor = true;
476
+
477
+ if ( empty( $_POST['message_id'] ) || !is_numeric( $_POST['message_id'] ) ) {
478
+
479
+ $my_post = array(
480
+ 'post_status' => 'auto-draft',
481
+ 'post_type' => 'ig_message'
482
+ );
483
+ $message_id = wp_insert_post( $my_post );
484
+ $message_title = '';
485
+ $message_type = $_POST['message_id'];
486
+
487
+ } else {
488
+
489
+ $message_id = $_POST['message_id'];
490
+ $message_title = get_the_title( $message_id );
491
+ $message_data = get_post_meta( $message_id, 'icegram_message_data', true );
492
+ $message_type = $message_data['type'];
493
+
494
+ }
495
+
496
+ ob_start();
497
+ $icegram_message_meta_key = apply_filters('icegram_message_meta_key' , 'messages');
498
+ ?>
499
+ <tr class="form-field message-row" value="<?php echo $message_id; ?>">
500
+ <td class="message_header">
501
+ <label class="message_header_label <?php echo "ig_".$message_type; ?>"><?php echo ucwords( str_replace( "-", ' ', $message_type ) ); ?></label>
502
+ </td>
503
+ <td class="message_title">
504
+ <div class="message-title-text" style="display:none;"><?php echo $message_title; ?></div>
505
+ <input type="text" class="message-title-input" name="message_data[<?php echo $message_id; ?>][post_title]" value="<?php echo $message_title; ?>" placeholder="<?php echo __( 'Give this message a name for your own reference', 'icegram' ); ?>">
506
+ </td>
507
+ <td class="message_seconds">
508
+ <input type="hidden" name="<?php echo $icegram_message_meta_key .'['.$_POST['row']; ?>][id]" value="<?php echo $message_id; ?>" />
509
+ <input type="number" class="seconds-text" name="<?php echo $icegram_message_meta_key .'['.$_POST['row']; ?>][time]" min="-1" value="0" size="3" /><?php _e( ' sec', 'icegram' )?>
510
+ </td>
511
+ <td class="action_links">
512
+ <span class="actions message_edit" title="<?php _e( 'Edit Message', 'icegram' ); ?>" ></span>
513
+ <span class="actions message_delete" title="<?php _e( 'Remove from Campaign', 'icegram' ); ?>" ></span>
514
+ </td>
515
+ </tr>
516
+ <tr id="message_row_<?php echo $message_id; ?>" class="message-edit-row">
517
+ <td colspan="4">
518
+ <?php
519
+ $ig_message_admin->message_form_fields( '', array( 'message_type' => $message_type, 'message_id' => $message_id, 'new_message_row' => true ) );
520
+ ?>
521
+ </td>
522
+ </tr>
523
+ <?php
524
+
525
+ echo json_encode( array( 'id' => $message_id, 'main' => ob_get_clean() ) );
526
+ die();
527
+
528
+ }
529
+
530
+ // Save all list of messages and targeting rules
531
+ function save_campaign_settings( $post_id, $post ) {
532
+
533
+ if (empty( $post_id ) || empty( $post ) || empty( $_POST )) return;
534
+ if (defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE) return;
535
+ if (is_int( wp_is_post_revision( $post ) )) return;
536
+ if (is_int( wp_is_post_autosave( $post ) )) return;
537
+ if ( empty( $_POST['icegram_campaign_meta_nonce'] ) || ! wp_verify_nonce( $_POST['icegram_campaign_meta_nonce'], 'icegram_campaign_save_data' ) ) return;
538
+ if (! current_user_can( 'edit_post', $post_id )) return;
539
+ if ($post->post_type != 'ig_campaign') return;
540
+
541
+ $campaign_target_rules = apply_filters( 'icegram_update_campaign_rules', $_POST['campaign_target_rules'], $post_id );
542
+
543
+ if(!empty($campaign_target_rules) && !empty($campaign_target_rules['local_urls'])){
544
+ foreach ($campaign_target_rules['local_urls'] as $key => $url) {
545
+ if( !empty( $url ) ){
546
+ if( $url == '*'){
547
+ $campaign_target_rules['local_urls'][$key] = $url;
548
+ }else{
549
+ $url = str_replace($this->site_url, '', $url);
550
+ $campaign_target_rules['local_urls'][$key] = $url;
551
+ }
552
+ } else {
553
+ unset($campaign_target_rules['local_urls'][$key]);
554
+ }
555
+ }
556
+
557
+ }
558
+
559
+ if ( isset( $_POST['page_id'] ) ) {
560
+ $campaign_target_rules['page_id'] = $_POST['page_id'];
561
+ update_post_meta( $post_id, 'icegram_campaign_target_pages', $_POST['page_id'] );
562
+ }
563
+ if ( isset( $_POST['exclude_page_id'] ) ) {
564
+ $campaign_target_rules['exclude_page_id'] = $_POST['exclude_page_id'];
565
+ update_post_meta( $post_id, 'icegram_campaign_target_pages', $_POST['exclude_page_id'] );
566
+ }
567
+
568
+ if ( count( $campaign_target_rules ) > 0 ) {
569
+ update_post_meta( $post_id, 'icegram_campaign_target_rules', $campaign_target_rules );
570
+ }
571
+
572
+ if ( empty( $_POST['messages'] ) ) {
573
+ update_post_meta( $post_id, 'messages', array() );
574
+ } else {
575
+
576
+ update_post_meta( $post_id, 'messages', array_values( $_POST['messages'] ) );
577
+ update_post_meta( $post_id, 'campaign_preview', array_values( $_POST['messages'] ) );
578
+
579
+ // Saving $_POST to temp var before updating messages
580
+ // to avoid problems with action handlers that rely on
581
+ // $_POST vars - e.g. WPML!!
582
+ $old_post = $_POST;
583
+ $_POST = array();
584
+ foreach ( $old_post['message_data'] as $message_id => $message_data ) {
585
+
586
+ $type = $message_data['type'];
587
+ if( isset( $message_data['theme'][$type] ) ) {
588
+ $message_data['theme'] = $message_data['theme'][$type];
589
+ } else {
590
+ unset( $message_data['theme'] );
591
+ }
592
+ if( isset( $message_data['animation'][$type] ) ) {
593
+ $message_data['animation'] = $message_data['animation'][$type];
594
+ } else {
595
+ unset( $message_data['animation'] );
596
+ }
597
+ if( isset( $message_data['position'][$type] ) ) {
598
+ $message_data['position'] = $message_data['position'][$type];
599
+ } elseif( isset( $message_data['position']['ig_default'] ) ) {
600
+ $message_data['position'] = $message_data['position']['ig_default'];
601
+ }
602
+ //save message data when campaign is save
603
+ $message_data = apply_filters( 'icegram_update_message_data', $message_data, $message_id );
604
+ update_post_meta( $message_id, 'icegram_message_data', $message_data );
605
+ update_post_meta( $message_id, 'icegram_message_preview_data', $message_data );
606
+ wp_update_post( array ( 'ID' => $message_id,
607
+ 'post_content' => $message_data['message'],
608
+ 'post_status' => 'publish',
609
+ 'post_title' => empty( $message_data['post_title'] ) ? $message_data['headline']: $message_data['post_title']
610
+ ) );
611
+ }
612
+ $_POST = $old_post;
613
+ }
614
+ }
615
+
616
+ // On preview button click save campaign messages list
617
+ function save_campaign_preview() {
618
+
619
+ if ( empty($_POST['post_ID']) ) die();
620
+ if ( !current_user_can( 'edit_post', $_POST['post_ID'] ) ) die();
621
+
622
+ $messages = apply_filters('campaign_preview_messages' , $_POST['messages'] , $_POST);
623
+
624
+ if( !empty( $messages ) ) {
625
+ update_post_meta( $_POST['post_ID'], 'campaign_preview', $messages ) ;
626
+
627
+ foreach ( (array) $_POST['message_data'] as $message_id => $message_data ) {
628
+ $type = $message_data['type'];
629
+ if( isset( $message_data['theme'][$type] ) ) {
630
+ $message_data['theme'] = $message_data['theme'][$type];
631
+ } else {
632
+ unset( $message_data['theme'] );
633
+ }
634
+ if( isset( $message_data['animation'][$type] ) ) {
635
+ $message_data['animation'] = $message_data['animation'][$type];
636
+ } else {
637
+ unset( $message_data['animation'] );
638
+ }
639
+ if( isset( $message_data['position'][$type] ) ) {
640
+ $message_data['position'] = $message_data['position'][$type];
641
+ } elseif( isset( $message_data['position']['ig_default'] ) ) {
642
+ $message_data['position'] = $message_data['position']['ig_default'];
643
+ }
644
+ $message_data = apply_filters( 'icegram_update_message_preview_data', $message_data, $message_id );
645
+ update_post_meta( $message_id, 'icegram_message_preview_data', $message_data );
646
+ }
647
+ // Determine page url to preview on...
648
+ $page_url = '';
649
+
650
+ if ( !empty($_POST['campaign_target_rules']) && !empty($_POST['campaign_target_rules']['other_page']) && !empty($_POST['page_id']) && is_array($_POST['page_id'])) {
651
+ $page_url = get_permalink( $_POST['page_id'][0] );
652
+ }
653
+ if ($page_url == '') {
654
+ if(!empty($_POST['campaign_target_rules']['local_url']) && is_array($_POST['campaign_target_rules']['local_urls'])){
655
+ $page_url = (strpos($_POST['campaign_target_rules']['local_urls'][0], '*') === false) ? $_POST['campaign_target_rules']['local_urls'][0] : home_url();
656
+ }else{
657
+ $page_url = home_url();
658
+ }
659
+ }
660
+ ob_clean();
661
+ echo add_query_arg( 'campaign_preview_id', $_POST['post_ID'], $page_url );
662
+ }
663
+ die();
664
+
665
+ }
666
+
667
+ function add_campaign_action( $actions, $post ){
668
+ if ($post->post_type != 'ig_campaign') return $actions;
669
+
670
+ // Create a nonce & add an action
671
+ $actions['duplicate_campaign'] = '<a class="ig-duplicate-campaign" href="post.php?campaign_id='.$post->ID.'&action=duplicate-campaign" >'.__('Duplicate' ,'icegram').'</a>';
672
+ //TODO:: test this properly
673
+ $actions['preview_campaign'] = '<a class="ig-preview-campaign" target="_blank" href="'.home_url().'?campaign_preview_id='.$post->ID.'" >'.__('Preview' ,'icegram').'</a>';
674
+ return $actions;
675
+ }
676
+
677
+ function duplicate_campaign(){
678
+ if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'duplicate-campaign' && !empty($_REQUEST['campaign_id'])){
679
+ Icegram::duplicate( $_REQUEST['campaign_id'] );
680
+ }
681
+ }
682
+
683
+ }
684
+ }
trunk/classes/class-icegram-campaign.php ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ /**
4
+ * Icegram Campaign class
5
+ */
6
+ if ( !class_exists( 'Icegram_Campaign' ) ) {
7
+ class Icegram_Campaign {
8
+
9
+ var $_post;
10
+ var $title;
11
+ var $messages;
12
+ var $rules;
13
+ var $rules_summary;
14
+
15
+ function __construct( $id = '' ) {
16
+
17
+ if ( !empty( $id ) ) {
18
+
19
+ $this->_post = get_post( $id );
20
+ if(!is_object($this->_post)) return;
21
+ $this->title = $this->_post->post_title;
22
+ //icegram_campaign_meta_key
23
+ $meta_key = apply_filters('icegram_campaign_meta_key' ,'messages' ,$this->_post->ID);
24
+ $this->messages = get_post_meta( $this->_post->ID, $meta_key, true );
25
+
26
+ $this->rules = get_post_meta( $this->_post->ID, 'icegram_campaign_target_rules', true );
27
+ $this->rules_summary['where'] = array(
28
+ 'homepage' => ( !empty( $this->rules['homepage'] ) ) ? $this->rules['homepage'] : '',
29
+ 'other_page' => ( !empty( $this->rules['other_page'] ) && $this->rules['other_page'] == 'yes' && !empty( $this->rules['page_id'] ) ) ? $this->rules['page_id'] : '',
30
+ 'blog' => ( !empty( $this->rules['blog'] ) ) ? $this->rules['blog'] : '',
31
+ 'sitewide' => ( !empty( $this->rules['sitewide'] ) ) ? $this->rules['sitewide'] : '',
32
+ 'local_url' => ( !empty( $this->rules['local_url'] ) ) ? $this->rules['local_url'] : ''
33
+ );
34
+ $this->rules_summary['when'] = array(
35
+ 'when' => ( !empty( $this->rules['when'] ) ) ? $this->rules['when'] : '',
36
+ 'from' => ( !empty( $this->rules['from'] ) ) ? $this->rules['from'] : '',
37
+ 'to' => ( !empty( $this->rules['to'] ) ) ? $this->rules['to'] : ''
38
+ );
39
+ $this->rules_summary['device'] = array(
40
+ 'mobile' => ( !empty( $this->rules['mobile'] ) ) ? $this->rules['mobile'] : '',
41
+ 'tablet' => ( !empty( $this->rules['tablet'] ) ) ? $this->rules['tablet'] : '',
42
+ 'laptop' => ( !empty( $this->rules['laptop'] ) ) ? $this->rules['laptop'] : ''
43
+ );
44
+ $this->rules_summary['users'] = ( !empty( $this->rules['logged_in'] ) && $this->rules['logged_in'] == 'logged_in' )
45
+ ? ( ( !empty( $this->rules['users'] ) ) ? $this->rules['users'] : array( 'none' ) )
46
+ : (!empty($this->rules['logged_in']) ? array($this->rules['logged_in']) : array('all'));
47
+
48
+ $this->rules_summary['retargeting'] = array( 'retargeting' => ( !empty( $this->rules['retargeting'] ) ) ? $this->rules['retargeting'] : '' ,
49
+ 'expiry_time' => ( !empty( $this->rules['retargeting']) ) ? $this->rules['expiry_time'] : '' );
50
+ $this->rules_summary['retargeting_clicked'] = array( 'retargeting_clicked' => ( !empty( $this->rules['retargeting_clicked'] ) ) ? $this->rules['retargeting_clicked'] : '' ,
51
+ 'expiry_time_clicked' => ( !empty( $this->rules['retargeting_clicked']) ) ? $this->rules['expiry_time_clicked'] : '' );
52
+
53
+ }
54
+
55
+ add_filter( 'icegram_campaign_validation', array( $this, '_is_valid_user_roles' ), 10, 3 );
56
+ add_filter( 'icegram_campaign_validation', array( $this, '_is_valid_device' ), 10, 3 );
57
+ add_filter( 'icegram_campaign_validation', array( $this, '_is_valid_time' ), 10, 3 );
58
+ add_filter( 'icegram_campaign_validation', array( $this, '_is_valid_page' ), 10, 3 );
59
+
60
+ }
61
+
62
+ function get_message_meta_by_id( $message_id ) {
63
+ foreach ($this->messages as $value) {
64
+ if ($value['id'] == $message_id) {
65
+ return $value;
66
+ }
67
+ }
68
+ }
69
+
70
+ function get_rule_value( $rule_type ) {
71
+ return (isset($this->rules_summary[$rule_type])) ? $this->rules_summary[$rule_type] : '';
72
+ }
73
+
74
+ function is_valid( $options = array() ) {
75
+ if( !empty( $this->_post->ID ) && $this->_post->post_status === 'publish') {
76
+ return apply_filters( 'icegram_campaign_validation', true, $this, $options );
77
+ }
78
+ return false;
79
+ }
80
+
81
+ function _is_valid_user_roles( $campaign_valid, $campaign, $options ) {
82
+ if( !$campaign_valid ) {
83
+ return $campaign_valid;
84
+ }
85
+
86
+ if(in_array( 'not_logged_in', $campaign->rules_summary['users'], true ) && !is_user_logged_in() ){
87
+ return true;
88
+ }
89
+ elseif ( in_array( 'all', $campaign->rules_summary['users'], true ) ) {
90
+ return true;
91
+ } elseif ( is_user_logged_in() && !in_array( 'none', $campaign->rules_summary['users'], true ) ) {
92
+ $current_user = wp_get_current_user();
93
+ if ( in_array( $current_user->roles[0], $campaign->rules_summary['users'], true ) ) {
94
+ return true;
95
+ }
96
+ }
97
+ return false;
98
+ }
99
+
100
+ function _is_valid_device( $campaign_valid, $campaign, $options ) {
101
+ if( !$campaign_valid ) {
102
+ return $campaign_valid;
103
+ }
104
+ $current_platform = Icegram::get_platform();
105
+ if ( !empty( $campaign->rules_summary['device'][ $current_platform ] ) && $campaign->rules_summary['device'][ $current_platform ] == 'yes' ) {
106
+ return true;
107
+ }
108
+ return false;
109
+ }
110
+
111
+ function _is_valid_time( $campaign_valid, $campaign, $options ) {
112
+
113
+ if( !$campaign_valid ) {
114
+ return $campaign_valid;
115
+ }
116
+ if ( !empty( $campaign->rules_summary['when']['when'] ) && $campaign->rules_summary['when']['when'] == 'always' ) {
117
+ return true;
118
+ }
119
+ if ( ( !empty( $campaign->rules_summary['when']['from'] ) && current_time('timestamp') > strtotime( $campaign->rules_summary['when']['from'] . " 00:00:00") ) && ( !empty( $campaign->rules_summary['when']['to'] ) && strtotime( $campaign->rules_summary['when']['to'] . " 23:59:59") > current_time('timestamp') ) ) {
120
+ return true;
121
+ }
122
+
123
+ return false;
124
+ }
125
+
126
+ function _is_valid_page( $campaign_valid, $campaign, $options ) {
127
+ $page_id = Icegram::get_current_page_id();
128
+ if( !$campaign_valid || !empty($options['skip_page_check']) ) {
129
+ return $campaign_valid;
130
+ }
131
+ if ( (!empty( $campaign->rules_summary['where']['sitewide'] ) && $campaign->rules_summary['where']['sitewide'] == 'yes' )) {
132
+ if (!empty($campaign->rules['exclude_page_id']) && in_array($page_id, $campaign->rules['exclude_page_id'])){
133
+ return false;
134
+ }else{
135
+ return true;
136
+ }
137
+ }
138
+ if ( !empty( $campaign->rules_summary['where']['homepage'] ) && $campaign->rules_summary['where']['homepage'] == 'yes' && ((isset($_REQUEST['is_home']) && $_REQUEST['is_home'] === 'true') || is_home() || is_front_page() )) {
139
+ return true;
140
+ }
141
+ if ( !empty( $page_id ) ) {
142
+ if ( !empty( $campaign->rules_summary['where']['other_page'] ) && in_array( $page_id, $campaign->rules_summary['where']['other_page'] ) ) {
143
+ return true;
144
+ }
145
+ }
146
+ if ( (!empty( $campaign->rules_summary['where']['local_url'] ) && $campaign->rules_summary['where']['local_url'] == 'yes' )) {
147
+ $current_page_url = Icegram::get_current_page_url();
148
+ // TODO::change this check with remote mode
149
+ //return if call made from remote url
150
+ if(!empty($_POST['ig_remote_url'])){
151
+ return;
152
+ }
153
+ foreach ($campaign->rules['local_urls'] as $local_url_pattern) {
154
+ if(empty($local_url_pattern)){
155
+ $local_url_pattern = home_url().'/';
156
+ }
157
+ $result = $this->is_valid_url($local_url_pattern, $current_page_url);
158
+ if($result){
159
+ return $result;
160
+ }else{
161
+ continue;
162
+ }
163
+ }
164
+ }
165
+ return false;
166
+ }
167
+
168
+ static function is_valid_url($pattern, $current_page_url){
169
+ $pattern = preg_quote($pattern,'/');
170
+ if(strpos($pattern, '*') !== false){
171
+ $pattern = str_replace('\*', '[-a-zA-Z0-9+&@#\/%?=~_|!:,.;]*', $pattern);
172
+ }
173
+
174
+ $result = (bool) preg_match('/'.$pattern.'$/i', $current_page_url);
175
+ return $result;
176
+ }
177
+ }
178
+ }
trunk/classes/class-icegram-compat.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ /**
4
+ * Icegram Compatibility class with other plugins
5
+ */
6
+ if ( !class_exists( 'Icegram_Compat_Base' ) ) {
7
+ class Icegram_Compat_Base {
8
+
9
+ // Sets up printing compatibility code
10
+ function __construct() {
11
+ global $icegram;
12
+ if($icegram->cache_compatibility === 'yes'){
13
+ add_action( 'wp_footer', array( &$this, 'render_js' ) );
14
+ } else {
15
+ add_action( 'icegram_data_printed', array( &$this, 'render_js' ) );
16
+ }
17
+ }
18
+
19
+ // This will be overridden in child classes
20
+ function render_js() {
21
+
22
+ }
23
+ }
24
+ }
trunk/classes/class-icegram-message-admin.php ADDED
@@ -0,0 +1,763 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ /**
4
+ * Icegram Message Admin class
5
+ */
6
+ if ( !class_exists( 'Icegram_Message_Admin' ) ) {
7
+
8
+ class Icegram_Message_Admin {
9
+
10
+ var $message_themes;
11
+ var $is_icegram_editor;
12
+
13
+ private function __construct() {
14
+
15
+ add_action( 'add_meta_boxes', array( &$this, 'add_message_meta_boxes' ) );
16
+ add_action( 'wp_ajax_get_message_setting', array( &$this , 'message_form_fields' ) );
17
+
18
+ add_action( 'save_post', array( &$this, 'update_message_settings' ), 10, 2 );
19
+ add_filter( 'wp_insert_post_data', array( &$this, 'save_message_in_post_content' ) );
20
+
21
+ add_filter( 'manage_edit-ig_message_columns', array( $this, 'edit_columns' ) );
22
+ add_action( 'manage_ig_message_posts_custom_column', array( $this, 'custom_columns' ), 2 );
23
+ add_filter( 'icegram_available_headlines', array( &$this, 'available_headlines' ) );
24
+
25
+ //duplicate message
26
+ add_filter( 'post_row_actions', array(&$this , 'add_message_action'), 10, 2 );
27
+ add_action('admin_init', array(&$this ,'duplicate_message') ,10, 1);
28
+
29
+ }
30
+ public static function getInstance(){
31
+ static $ig_message_admin = null;
32
+ if (null === $ig_message_admin) {
33
+ $ig_message_admin = new Icegram_Message_Admin();
34
+ }
35
+ return $ig_message_admin;
36
+ }
37
+
38
+ // Initialize message metabox
39
+ function add_message_meta_boxes() {
40
+ global $icegram;
41
+ add_meta_box( 'message-settings', __( 'Message Settings', 'icegram' ), array ( &$this, 'message_form_fields' ), 'ig_message', 'normal', 'high' );
42
+
43
+ }
44
+
45
+ // Display all message settings fields
46
+ function message_form_fields( $post = '', $action = array() ) {
47
+ global $icegram, $pagenow;
48
+
49
+ if( ( is_object( $post ) && $post->post_type != 'ig_message' ) )
50
+ return;
51
+ ?>
52
+ <style type="text/css">
53
+ <?php
54
+ foreach ( $icegram->message_types as $message_type => $message ) {
55
+
56
+ if( !empty( $message['admin_style'] ) ) {
57
+ $message_type = 'ig_'.$message_type;
58
+ $label_bg_color = $message['admin_style']['label_bg_color'];
59
+ $theme_header_height = $message['admin_style']['theme_header_height'];
60
+ $theme_header_bg_size = ( $theme_header_height + 3 )."em";
61
+ $thumbnail_width = $message['admin_style']['thumbnail_width'];
62
+ $thumbnail_height = $message['admin_style']['thumbnail_height'];
63
+ echo " .message_header .$message_type {
64
+ background-color: {$label_bg_color};
65
+ }
66
+ .message_theme_{$message_type} + .chosen-container-single .chosen-single {
67
+ height: {$theme_header_height} !important;
68
+ }
69
+ .message_theme_{$message_type} + .chosen-container-single .chosen-single span {
70
+ background-size: {$theme_header_bg_size} !important;
71
+ line-height: {$theme_header_height} !important;
72
+ }
73
+ .message_theme_{$message_type} + .chosen-container .chosen-results li {
74
+ width: {$thumbnail_width} !important;
75
+ height: {$thumbnail_height} !important;
76
+ }";
77
+ }
78
+
79
+ }
80
+ ?>
81
+ </style>
82
+ <?php
83
+ $message_id = !empty( $action['message_id'] ) ? $action['message_id'] : $post->ID;
84
+ $message_data = get_post_meta( $message_id, 'icegram_message_data', true );
85
+ $message_headlines = $icegram->available_headlines;
86
+ $settings = $this->message_settings_to_show();
87
+ $positions = $this->message_positions_to_show();
88
+ if ( $pagenow == 'post-new.php' ) {
89
+ $message_title_key = array_rand( $message_headlines );
90
+ $default_message_title = $message_headlines[$message_title_key];
91
+ } else {
92
+ $default_message_title = $message_title_key = '';
93
+ }
94
+
95
+ if( empty( $message_data ) ) {
96
+ $message_type = !empty( $action['message_type'] ) ? $action['message_type'] : '';
97
+ $message_data = $this->default_message_data( $message_type );
98
+ }
99
+
100
+ if( !empty( $action['message_type'] ) ) {
101
+ $message_data['type'] = $action['message_type'];
102
+ }
103
+
104
+ wp_nonce_field( 'icegram_message_save_data', 'icegram_message_meta_nonce' );
105
+ if( !empty( $action['message_id'] ) ) {
106
+ ?>
107
+ <div class="thickbox_edit_message" id="<?php echo $action['message_id']; ?>">
108
+ <?php
109
+ }
110
+ ?>
111
+ <div class="wp_attachment_details edit-form-section message-setting-fields">
112
+ <p>
113
+ <label for="message_type" class="message_label"><strong><?php _e( 'Type', 'icegram' ); ?></strong></label>
114
+ <select id="message_type" name="message_data[<?php echo $message_id; ?>][type]" class="message_type icegram_chosen_page">
115
+ <option value="unknown">Select Message</option>
116
+ <?php foreach ( $icegram->message_types as $message ) {
117
+ $selected = ( ( !empty( $message_data['type'] ) && esc_attr( $message['type'] ) == $message_data['type'] ) ) ? 'selected' : '';
118
+ ?>
119
+ <option value="<?php echo esc_attr( $message['type'] ) ?>" <?php echo $selected; ?>><?php echo esc_html( $message['name'] ) ?></option>
120
+ <?php } ?>
121
+ </select>
122
+ </p>
123
+ <?php foreach ( $icegram->message_types as $message ) {
124
+ if( empty( $message['themes'] ) ) {
125
+ continue;
126
+ }
127
+ ?>
128
+ <p class="message_row <?php echo "ig_".$message['type']; ?>">
129
+
130
+ <label for="message_theme_ig_<?php echo $message['type'] ?>" class="message_label"><strong><?php _e( 'Theme', 'icegram' ); ?></strong></label>
131
+ <select id="message_theme_ig_<?php echo $message['type'] ?>" name="message_data[<?php echo $message_id; ?>][theme][<?php echo $message['type'] ?>]" class="icegram_chosen_page message_theme message_theme_ig_<?php echo $message['type']; ?>">
132
+ <?php
133
+ asort($message['themes']);
134
+ foreach ( $message['themes'] as $theme ) {
135
+ $bg_img = "background-image: url(" . $theme['baseurl'] . $theme['type'] . ".png)";
136
+ ?>
137
+ <option style="<?php echo $bg_img; ?>" value="<?php echo esc_attr( $theme['type'] ) ?>" class="<?php echo esc_attr( $theme['type'] ) ?>" <?php echo ( !empty( $message_data['theme'] ) && esc_attr( $theme['type'] ) == $message_data['theme'] ) ? 'selected' : ''; ?>><?php echo esc_html( $theme['name'] ) ?></option>
138
+ <?php } ?>
139
+ </select>
140
+ </p>
141
+ <?php } ?>
142
+ <?php foreach ( $icegram->message_types as $message ) {
143
+ if( empty( $message['settings']['animation']['values'] ) ) continue;
144
+ $animations = $message['settings']['animation']['values']
145
+ ?>
146
+ <p class="message_row <?php echo "ig_".$message['type']; ?>">
147
+ <label for="message_animation_<?php echo $message['type'] ?>" class="message_label"><strong><?php _e( 'Animation', 'icegram' ); ?></strong></label>
148
+ <select id="message_animation_<?php echo $message['type'] ?>" name="message_data[<?php echo $message_id; ?>][animation][<?php echo $message['type'] ?>]" class="icegram_chosen_page message_animation message_animation_<?php echo $message['type']; ?>">
149
+ <?php asort($animations);
150
+ $animations = array('no-anim' => 'No Animation') + $animations;
151
+ foreach ( $animations as $value => $label ) { ?>
152
+ <option value="<?php echo esc_attr( $value ) ?>" <?php echo ( !empty( $message_data['animation'] ) && esc_attr( $value ) == $message_data['animation'] ) ? 'selected' : ''; ?>><?php echo esc_html( $label ) ?></option>
153
+ <?php } ?>
154
+ </select>
155
+ </p>
156
+ <?php }
157
+ // action add for interstitial message setting
158
+ do_action( 'icegram_after_message_theme_settings', $message_id, $message_data );
159
+ ?>
160
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['headline'] )?>">
161
+ <label for="message_headline" class="message_label">
162
+ <strong><?php _e( 'Headline', 'icegram' ); ?></strong>
163
+ <span class="help_tip admin_field_icon" data-tip="<?php _e( 'Shown with highest prominence. Click on idea button on right to get a new headline.', 'icegram' ); ?>"></span>
164
+ </label>
165
+ <?php
166
+ $message_headline = ( isset( $message_data['headline'] ) ) ? $message_data['headline'] : $default_message_title;
167
+ ?>
168
+ <input type="text" class="message_field" name="message_data[<?php echo $message_id; ?>][headline]" id="message_title" value="<?php echo esc_attr( $message_headline ); ?>" data-headline="<?php echo $message_title_key; ?>" />
169
+ <a class="button message_headline_button tips" data-tip="<?php _e( 'Give Me Another Headline', 'icegram' ); ?>">
170
+ <span class="headline-buttons-icon admin_field_icon"></span>
171
+ </a>
172
+ </p>
173
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['icon'] )?>">
174
+ <label for="upload_image" class="message_label">
175
+ <strong><?php _e( 'Icon / Avatar Image', 'icegram' ); ?></strong>
176
+ <span class="help_tip admin_field_icon" data-tip="<?php _e( 'This image will appear in message content.', 'icegram' ); ?>"></span>
177
+ </label>
178
+ <input id="upload_image" type="text" class="message_field" name="message_data[<?php echo $message_id; ?>][icon]" value="<?php if( isset( $message_data['icon'] ) ) echo esc_attr( $message_data['icon'] ); ?>"/>
179
+ <a class="button message_image_button tips" data-tip="<?php _e( 'Upload / Select an image', 'icegram' ); ?>" onclick="tb_show('<?php _e( 'Upload / Select Image' ); ?>', 'media-upload.php?type=image&TB_iframe=true', false);" >
180
+ <span class="image-buttons-icon admin_field_icon"></span>
181
+ </a>
182
+ </p>
183
+
184
+ <?php
185
+ $editor_args = array(
186
+ 'textarea_name' => 'message_data[' . $message_id . '][message]',
187
+ 'textarea_rows' => 10,
188
+ 'editor_class' => 'wp-editor-message',
189
+ 'media_buttons' => true,
190
+ 'tinymce' => true
191
+ );
192
+ ?>
193
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['message'] )?>">
194
+ <style type="text/css">.wp-editor-tools:after {display: inline-block !important; }</style>
195
+ <label for="message_body" class="message_body message_label"><strong><?php _e( 'Message Body', 'icegram' ); ?></strong></label>
196
+ <?php
197
+ $message = ( !empty( $message_data['message'] ) ) ? $message_data['message'] : '';
198
+ //TODO :: check need of exit-redirect Type
199
+ if(in_array($message_data['type'], array('toast', 'badge', 'ribbon' , 'exit-redirect'))){
200
+ $message = str_replace('[ig_form]', '', $message);
201
+ }
202
+ ?>
203
+
204
+ <?php wp_editor( $message, 'edit'.$message_id, $editor_args ); ?>
205
+ </p>
206
+
207
+ <!-- Embed Form options -->
208
+
209
+ <?php
210
+
211
+ $form_html = ( !empty( $message_data['form_html'] ) ) ? $message_data['form_html'] : '';
212
+ $form_html_original = ( !empty( $message_data['form_html_original'] ) ) ? $message_data['form_html_original'] : '';
213
+ $form_header = ( !empty( $message_data['form_header'] ) ) ? $message_data['form_header'] : '';
214
+ $form_footer = ( !empty( $message_data['form_footer'] ) ) ? $message_data['form_footer'] : '';
215
+ $form_bg_color = ( !empty( $message_data['form_bg_color'] ) ) ? $message_data['form_bg_color'] : '';
216
+ $form_text_color = ( !empty( $message_data['form_text_color'] ) ) ? $message_data['form_text_color'] : '';
217
+ $form_has_label = ( !empty( $message_data['form_has_label'] ) ) ? checked( $message_data['form_has_label'], 'yes', 0 ) : '';
218
+ $form_layouts = $this->message_form_layouts_to_show();
219
+ $default_form_layout = !empty($icegram->message_types[$message_data['type']]['settings']['form_layout']['default']) ? $icegram->message_types[$message_data['type']]['settings']['form_layout']['default'] : '';
220
+ $use_form_check = ( !empty( $message_data['use_form'] ) )
221
+ ? checked( $message_data['use_form'], 'yes', 0)
222
+ : '';
223
+ $show_form_options = empty($use_form_check) ? 'style="display:none;"' : '';
224
+ ?>
225
+ <p class="message_row message_form_options_check <?php echo "ig_".implode( ' ig_', $settings['embed_form'] )?>" message_id="<?php echo $message_id; ?>">
226
+ <label for="message_use_form" class="message_label"><strong><?php _e( 'Form', 'icegram' ); ?></strong></label> <label >
227
+ <input class="show_form_options" type="checkbox" name="message_data[<?php echo $message_id; ?>][use_form]" id="message_use_form" value="yes" <?php echo $use_form_check ?>/> <?php _e('Use Opt-in / Subscription / Lead capture form' , 'icegram' ); ?></label>
228
+ </p>
229
+
230
+ <div class="message_form_options" <?php echo $show_form_options; ?> message_id="<?php echo $message_id; ?>">
231
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['embed_form'] )?>">
232
+ <label for="message_form_style" class="message_label">&nbsp;</label>
233
+ <select id="message_form_style" name="message_data[<?php echo $message_id; ?>][form_style]" class="icegram_chosen_page message_form_style " >
234
+ <?php
235
+ $available_form_styles = $this->available_form_styles();
236
+ foreach ( $available_form_styles as $style ) {
237
+ $bg_img = "background-image: url(" . $icegram->plugin_url.'/assets/images/' . strtolower(str_replace( ' ', '_', $style['name'])) . ".png)";
238
+ ?>
239
+ <option style="<?php echo $bg_img; ?>" <?php echo ( !empty( $message_data['form_style'] ) && strtolower(str_replace( ' ', '_', $style['name'])) == $message_data['form_style'] ) ? 'selected' : ''; ?> value="<?php echo esc_attr( strtolower(str_replace( ' ', '_', $style['name'])) ) ?>" class="<?php echo strtolower(str_replace( ' ', '_', $style['name'])) ?>" <?php echo ( !empty( $message_data['form_style'] ) && esc_attr( strtolower($style['name']) ) == $message_data['form_style'] ) ? 'selected' : ''; ?>><?php echo esc_html( $style['name'] ) ?></option>
240
+ <?php } ?>
241
+ </select>
242
+ </p>
243
+
244
+ <p class="form_layouts message_row <?php echo "ig_".implode( ' ig_', $settings['embed_form'] )?>">
245
+ <label for="message_form_layouts" class="message_label">&nbsp;</label>
246
+ <div class="form_radio_group" >
247
+ <!-- <span class="message_label message_row <?php //echo "ig_".implode( ' ig_', $settings['embed_form'] )?>"> <?php// _e('Position', 'icegram' ); ?></span> -->
248
+ <span class="location <?php if( !empty( $form_layouts['left'] ) ) { echo "ig_".implode( ' ig_', $form_layouts['left'] ); } ?>" >
249
+ <label style="background-position:0px 23px;" for="form_layout_left_<?php echo $message_id;?>" title="<?php _e('Left', 'icegram' ); ?>">
250
+ <input class="message_form_layout" type="radio" id="form_layout_left_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][form_layout]" value="left" <?php echo ( !empty($message_data['form_layout']) && "left" == $message_data['form_layout'] ) ? 'checked' : ( empty($message_data['form_layout']) && "left" == $default_form_layout ? 'checked' : '') ; ?> />
251
+ <?php _e('Left', 'icegram' ); ?>
252
+ </label>
253
+ </span>
254
+
255
+ <span class="location <?php if( !empty( $form_layouts['right'] ) ) { echo "ig_".implode( ' ig_', $form_layouts['right'] ); } ?>">
256
+ <label style="background-position:-100px 23px;" for="form_layout_right_<?php echo $message_id;?>" title="<?php _e('Right', 'icegram' ); ?>">
257
+ <input class="message_form_layout" type="radio" id="form_layout_right_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][form_layout]" value="right" <?php echo ( !empty( $message_data['form_layout'] ) && "right" == $message_data['form_layout'] ) ? 'checked' : ( empty($message_data['form_layout']) && "right" == $default_form_layout ? 'checked' : '') ; ?> />
258
+ <?php _e('Right', 'icegram' ); ?>
259
+ </label>
260
+ </span>
261
+
262
+ <span class="location <?php if( !empty( $form_layouts['bottom'] ) ) { echo "ig_".implode( ' ig_', $form_layouts['bottom'] ); } ?>">
263
+ <label style="background-position:-200px 23px;"for="form_layout_bottom_<?php echo $message_id;?>" title="<?php _e('Bottom', 'icegram' ); ?>">
264
+ <input class="message_form_layout" type="radio" id="form_layout_bottom_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][form_layout]" value="bottom" <?php echo ( !empty( $message_data['form_layout'] ) && "bottom" == $message_data['form_layout'] ) ? 'checked' : ( empty($message_data['form_layout']) && "bottom" == $default_form_layout ? 'checked' : '') ; ?> />
265
+ <?php _e('Bottom', 'icegram' ); ?>
266
+ </label>
267
+ </span>
268
+
269
+ <?php
270
+ $inline_position_checked = ( !empty( $message_data['form_layout'] ) && "inline" == $message_data['form_layout'] ) ? 'checked' : ( empty($message_data['form_layout']) && "inline" == $default_form_layout ? 'checked' : '') ;
271
+ $show_color_options = !empty( $inline_position_checked ) ? 'style="display:none;"' : '';
272
+ ?>
273
+ <span class="location <?php if( !empty( $form_layouts['inline'] ) ) { echo "ig_".implode( ' ig_', $form_layouts['inline'] ); } ?>">
274
+ <label style="background-position:-300px 23px;" for="form_layout_inline_<?php echo $message_id;?>" title="<?php _e('Inline', 'icegram' ); ?>">
275
+ <input class="message_form_layout" type="radio" id="form_layout_inline_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][form_layout]" value="inline" <?php echo $inline_position_checked;?> />
276
+ <?php _e('Inline', 'icegram' ); ?>
277
+ </label>
278
+ </span>
279
+ </div>
280
+
281
+ </p>
282
+ <?php
283
+
284
+ $color_field_html = '<p class="message_form_color message_row ig_"'.implode( ' ig_', $settings['embed_form'] ) .'" '. $show_color_options.'>
285
+ <label for="message_form_bg_color" class="message_label">&nbsp;</label>
286
+ <input type="text" class="message_field color-field" data-color-label="'.__( 'Background Color', 'icegram' ).'" name="message_data['.$message_id.'][form_bg_color]" id="message_form_bg_color" value="'. $form_bg_color .'" />
287
+ <input type="text" class="message_field color-field" data-color-label="'.__( 'Text Color', 'icegram' ).'" name="message_data['.$message_id.'][form_text_color]" id="message_form_text_color" value="'.$form_text_color.'" style="margin-left:5em !important" />
288
+ </p>';
289
+ $color_field = apply_filters('icegram_color_fields' , array( 'html' => $color_field_html ,'message_id' => $message_id ,'message_data' => $message_data) );
290
+
291
+ echo $color_field['html'];
292
+ $active_plugins = get_option( 'active_plugins', array() );
293
+
294
+ ?>
295
+
296
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['embed_form'] )?>">
297
+ <label class="message_label">&nbsp;</label>
298
+ <textarea class="message_field message_form_header" rows="2" autocomplete="off" cols="65" name="message_data[<?php echo $message_id; ?>][form_header]" id="" value="" placeholder="<?php _e('Text / HTML to show before the form', 'icegram' ); ?>"><?php echo esc_attr( $form_header ); ?></textarea>
299
+ </p>
300
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['embed_form'] )?>">
301
+ <label class="message_label">&nbsp;</label>
302
+ <?php
303
+ //Add Rainmaker form
304
+ $rm_html = __("Add form embed code") .'<strong>'. __(" or easily embed using ", "icegram" ). '<a style="font-style:normal;" href="' . admin_url("plugin-install.php?tab=search&type=term&s=icegram-rainmaker") .'" target="_blank" alt="Rainmaker - Forms, Leads and CRM">Icegram\'s Rainmaker' . '</a> plugin </strong>';
305
+ $hide_embed = '';
306
+ if(in_array('icegram-rainmaker/icegram-rainmaker.php', $active_plugins)){
307
+ $rainmaker_form_list = Rainmaker::get_rm_form_id_name_map();
308
+ $rm_html = __("Use Rainmaker form ", "icegram" );
309
+ $rm_html .= '<select class="rainmaker_form_list" style="max-width:30%" name="message_data['. $message_id .'][rainmaker_form_code]">
310
+ <option value="" selected>'. __("Select form ", "icegram" ) .'</option>' ;
311
+ foreach ( $rainmaker_form_list as $id => $name ){
312
+ $rm_html .= '<option '. ( (!empty( $message_data["rainmaker_form_code"] ) && $id == $message_data["rainmaker_form_code"] ) ? 'selected' : '' ) .' value="' . $id .'">' . $name .'</option>';
313
+ }
314
+ $rm_html .= '</select><span style="font-style:italic">'. __(' or add ', 'icegram') . '<a class="embed_form_code_toggle" style="cursor: pointer;">'. __('form embed code', 'icegram' ) .'</a></span>';
315
+ $hide_embed = (empty($message_data["rainmaker_form_code"]) && !empty($form_html_original)) ? '' : 'style="display:none"';
316
+ }
317
+ ?>
318
+ <label class="message_label">&nbsp;</label>
319
+ <span class="message_label" style="padding-bottom:.3em"> <?php echo $rm_html; ?></span>
320
+ <!-- <span class="message_label"> <?php //_e('Form Embed Code', 'icegram' ); ?></span> -->
321
+ <label class="message_label">&nbsp;</label>
322
+ <textarea class="message_field message_form_html_original" <?php echo $hide_embed ?> rows="6" autocomplete="off" cols="65" name="message_data[<?php echo $message_id; ?>][form_html_original]" id="message_form_html_original_<?php echo $message_id; ?>" value="" placeholder="<?php _e('Paste HTML / shortcode of your form here...', 'icegram' ); ?>"><?php if( isset( $form_html_original ) ) echo esc_attr( $form_html_original ); ?></textarea>
323
+ <br>
324
+ <label class="message_label">&nbsp;</label>
325
+ <label style="font-size:.9em;"><input class="message_form_has_label" type="checkbox" name="message_data[<?php echo $message_id; ?>][form_has_label]" value="yes" <?php echo $form_has_label ?> />
326
+ <?php _e('Show labels above fields' , 'icegram' ); ?></label>
327
+ </p>
328
+
329
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['embed_form'] )?>">
330
+ <label class="message_label">&nbsp;</label>
331
+ <textarea class="message_field message_form_footer" rows="2" autocomplete="off" cols="65" name="message_data[<?php echo $message_id; ?>][form_footer]" id="" value="" placeholder="<?php _e('Text / HTML to show after the form', 'icegram' ); ?>"><?php echo esc_attr( $form_footer ); ?></textarea>
332
+ </p>
333
+ <div class="form_inline_shortcode campaign_shortcode light message_row <?php echo "ig_".implode( ' ig_', $settings['embed_form'] )?>" style="font-size:.9em;display:inline;">
334
+ <?php echo __( 'Insert <code>[ig_form]</code> where you want to show this form in message body.', 'icegram' ); ?>
335
+ </div>
336
+ </div>
337
+
338
+ <!-- Embed Form options : End -->
339
+ <p class="message_row <?php echo "ig_".implode( ' ig_', $settings['label'] )?>">
340
+ <label for="message_label" class="message_label">
341
+ <strong><?php _e( 'Button Label', 'icegram' ); ?></strong>
342
+ <span class="help_tip admin_field_icon" data-tip="<?php _e( 'Your call to action text. Something unusual will increase conversions.', 'icegram' ); ?>"></span>
343
+ </label>
344
+ <input type="text" class="message_field" name="message_data[<?php echo $message_id; ?>][label]" id="message_label" value="<?php if( isset( $message_data['label'] ) ) echo esc_attr( $message_data['label'] ); ?>" />
345
+ </p>
346
+ <?php
347
+ do_action( 'icegram_after_button_label', $message_id, $message_data );
348
+ ?>
349
+ <?php
350
+ $target_link_field = '<p class="message_row ig_'.implode( ' ig_', $settings['link'] ).'">
351
+ <label for="message_link" class="message_label">
352
+ <strong>'.__('Target Link' ,'icegram').'</strong>
353
+ <span class="help_tip admin_field_icon" data-tip="'.__('Enter destination URL here. Clicking will redirect to this link.' ,'icegram').'"></span>
354
+ </label>
355
+ <input type="text" class="message_field" name="message_data['.$message_id.'][link]"
356
+ id="message_link" value="'.esc_attr( ( isset($message_data['link']) ? $message_data['link'] : '') ) .'" />
357
+ </p>';
358
+
359
+ $icegram_message_target_link = apply_filters('icegram_message_field_link' , array( 'html' => $target_link_field ,'message_id' => $message_id ,'message_data' => $message_data) );
360
+ echo $icegram_message_target_link['html'];
361
+ ?>
362
+
363
+ <?php
364
+ $text_color = ( !empty( $message_data['text_color'] ) ) ? $message_data['text_color'] : '';
365
+ $bg_color = ( !empty( $message_data['bg_color'] ) ) ? $message_data['bg_color'] : '';
366
+ $cta_bg_color = ( !empty( $message_data['cta_bg_color'] ) ) ? $message_data['cta_bg_color'] : '';
367
+ $cta_text_color = ( !empty( $message_data['cta_text_color'] ) ) ? $message_data['cta_text_color'] : '';
368
+ $colors_options_check = ( !empty( $message_data['use_theme_defaults'] ) )
369
+ ? checked( $message_data['use_theme_defaults'], 'yes', 0)
370
+ : ( (!empty($bg_color) || !empty($text_color) || !empty($cta_bg_color) || !empty($cta_text_color)) ? '' : 'checked="checked"' );
371
+
372
+ $show_color_options = (!empty($colors_options_check)) ? 'style="display: none;"' : '';
373
+ $color_field_html = '<div class="message_colors_options_container" '.$show_color_options.'>
374
+ <p class="message_row ig_'.implode( ' ig_', $settings['bg_color']).'">
375
+ <label for="message_bg_color" class="message_label">&nbsp;</label>
376
+ <span class="message_label" style="width:5em !important"> '.__( 'Body', 'icegram' ).'</span>
377
+ <input type="text" class="message_field color-field" data-color-label="'.__( 'Background', 'icegram' ).'" name="message_data['.$message_id.'][bg_color]" id="message_bg_color" value="'.$bg_color.'" />
378
+ <input type="text" class="message_field color-field" data-color-label="'.__( 'Text', 'icegram' ).'" name="message_data['.$message_id.'][text_color]" id="message_text_color" value="'.$text_color.'" />
379
+ </p>
380
+ <p class="message_row ig_'.implode( ' ig_', $settings['label'] ).'">
381
+ <label for="message_cta_bg_color" class="message_label">&nbsp;</label>
382
+ <span class="message_label" style="width:5em !important">'.__( 'Button', 'icegram' ) .'</span>
383
+ <input type="text" class="message_field color-field" data-color-label="'.__( 'Background', 'icegram' ).'" name="message_data['.$message_id.'][cta_bg_color]" id="message_cta_bg_color" value="'.$cta_bg_color.'" />
384
+ <input type="text" class="message_field color-field" data-color-label="'.__( 'Text', 'icegram' ).'" name="message_data['.$message_id.'][cta_text_color]" id="message_cta_text_color" value="'.$cta_text_color.'" />
385
+ </p>
386
+ </div>';
387
+ $color_field = apply_filters('icegram_color_fields' , array( 'html' => $color_field_html ,'message_id' => $message_id ,'message_data' => $message_data) );
388
+ $colors_options_html = '<p class="message_row ig_'.implode( ' ig_', $settings['bg_color']).'">
389
+ <label for="message_use_theme_defaults" class="message_label"><strong>'. __( 'Colors', 'icegram' ).'</strong></label> <label >
390
+ <input class="show_color_options" type="checkbox" name="message_data['.$message_id.'][use_theme_defaults]" id="message_use_theme_defaults" value="yes" '. $colors_options_check .'/> '. __( 'Use theme\'s default colors', 'icegram') .'</label> '.$color_field['html'].'
391
+ </p>';
392
+ echo $colors_options_html;
393
+
394
+ ?>
395
+ <p class="message_row position <?php echo "ig_".implode( ' ig_', $settings['position'] )?>">
396
+ <label for="message_position" class="message_label"><strong><?php _e( 'Position', 'icegram' ); ?></strong></label>
397
+ <span class="message_field location-selector message_label">
398
+ <input type="radio" id="radio01_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="00" <?php echo ( !empty( $message_data['position'] ) && "00" == $message_data['position'] ) ? 'checked' : ''; ?> />
399
+ <label for="radio01_<?php echo $message_id;?>" title="Top Left">
400
+ <span class="location <?php if( !empty( $positions['00'] ) ) { echo "ig_".implode( ' ig_', $positions['00'] ); } ?> top left" data-position="top left"></span>
401
+ </label>
402
+ <input type="radio" id="radio02_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="01" <?php echo ( !empty( $message_data['position'] ) && "01" == $message_data['position'] ) ? 'checked' : ''; ?> />
403
+ <label for="radio02_<?php echo $message_id;?>" title="Top">
404
+ <span class="location <?php if( !empty( $positions['01'] ) ) { echo "ig_".implode( ' ig_', $positions['01'] ); } ?> top" data-position="top"></span>
405
+ </label>
406
+ <input type="radio" id="radio03_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="02" <?php echo ( !empty( $message_data['position'] ) && "02" == $message_data['position'] ) ? 'checked' : ''; ?> />
407
+ <label for="radio03_<?php echo $message_id;?>" title="Top Right">
408
+ <span class="location <?php if( !empty( $positions['02'] ) ) { echo "ig_".implode( ' ig_', $positions['02'] ); } ?> top right" data-position="top right"></span>
409
+ </label>
410
+ <input type="radio" id="radio04_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="10" <?php echo ( !empty( $message_data['position'] ) && "10" == $message_data['position'] ) ? 'checked' : ''; ?> />
411
+ <label for="radio04_<?php echo $message_id;?>" title="Middle Left">
412
+ <span class="location <?php if( !empty( $positions['10'] ) ) { echo "ig_".implode( ' ig_', $positions['10'] ); } ?> middle left" data-position="middle left"></span>
413
+ </label>
414
+ <input type="radio" id="radio05_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="11" <?php echo ( !empty( $message_data['position'] ) && "11" == $message_data['position'] ) ? 'checked' : ''; ?> />
415
+ <label for="radio05_<?php echo $message_id;?>" title="Middle">
416
+ <span class="location <?php if( !empty( $positions['11'] ) ) { echo "ig_".implode( ' ig_', $positions['11'] ); } ?> middle middle" data-position="middle middle"></span>
417
+ </label>
418
+ <input type="radio" id="radio06_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="12" <?php echo ( !empty( $message_data['position'] ) && "12" == $message_data['position'] ) ? 'checked' : ''; ?> />
419
+ <label for="radio06_<?php echo $message_id;?>" title="Middle Right">
420
+ <span class="location <?php if( !empty( $positions['12'] ) ) { echo "ig_".implode( ' ig_', $positions['12'] ); } ?> middle right" data-position="middle right"></span>
421
+ </label>
422
+ <input type="radio" id="radio07_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="20" <?php echo ( !empty( $message_data['position'] ) && "20" == $message_data['position'] ) ? 'checked' : ''; ?> />
423
+ <label for="radio07_<?php echo $message_id;?>" title="Bottom Left">
424
+ <span class="location <?php if( !empty( $positions['20'] ) ) { echo "ig_".implode( ' ig_', $positions['20'] ); } ?> bottom left" data-position="bottom left"></span>
425
+ </label>
426
+ <input type="radio" id="radio08_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="21" <?php echo ( !empty( $message_data['position'] ) && "21" == $message_data['position'] || !isset( $message_data['position'] ) ) ? 'checked' : ''; ?> />
427
+ <label for="radio08_<?php echo $message_id;?>" title="Bottom">
428
+ <span class="location <?php if( !empty( $positions['21'] ) ) { echo "ig_".implode( ' ig_', $positions['21'] ); } ?> bottom" data-position="bottom"></span>
429
+ </label>
430
+ <input type="radio" id="radio09_<?php echo $message_id;?>" name="message_data[<?php echo $message_id; ?>][position][ig_default]" value="22" <?php echo ( !empty( $message_data['position'] ) && "22" == $message_data['position'] ) ? 'checked' : ''; ?> />
431
+ <label for="radio09_<?php echo $message_id;?>" title="Bottom Right">
432
+ <span class="location <?php if( !empty( $positions['22'] ) ) { echo "ig_".implode( ' ig_', $positions['22'] ); } ?> bottom right" data-position="bottom right"></span>
433
+ </label>
434
+ </span>
435
+ </p>
436
+ <?php
437
+ do_action( 'icegram_after_message_settings', $message_id, $message_data );
438
+ ?>
439
+ <!-- Custom code -->
440
+ <?php
441
+ $dummy_css = '#ig_this_message .ig_headline{ /* font-size: 3em !important; */ }';
442
+ $dummy_js = '<script type="text/javascript"> /* add your js code here */ </script>';
443
+ $message_custom_css = ( !empty( $message_data['custom_css'] ) ) ? $message_data['custom_css'] : $dummy_css;
444
+ $message_custom_js = ( !empty( $message_data['custom_js'] ) ) ? $message_data['custom_js'] : $dummy_js;
445
+ $use_custom_code_check = ( !empty( $message_data['use_custom_code'] ) )
446
+ ? checked( $message_data['use_custom_code'], 'yes', 0)
447
+ : '';
448
+ $show_custom_code_options = empty($use_custom_code_check) ? 'style="display:none;"' : '';
449
+
450
+ ?>
451
+ <p class="message_row message_custom_code_options_check <?php echo "ig_".implode( ' ig_', $settings['custom_code'] )?>" message_id="<?php echo $message_id; ?>">
452
+ <label for="message_custom_code" class="message_label"><strong><?php _e( 'Custom Code', 'icegram' ); ?></strong></label>
453
+ <label><input class="show_custom_code_options" type="checkbox" name="message_data[<?php echo $message_id; ?>][use_custom_code]" id="message_use_custom_code" value="yes" <?php echo $use_custom_code_check ?>/> <?php _e('Add custom code for this message' , 'icegram' ); ?></label>
454
+ </p>
455
+ <div class="message_custom_code_options" <?php echo $show_custom_code_options; ?> message_id="<?php echo $message_id; ?>">
456
+ <label class="message_label">&nbsp;</label>
457
+ <span class="message_label"> <?php _e('CSS', 'icegram' ); ?></span>
458
+ <br>
459
+ <label class="message_label">&nbsp;</label>
460
+ <textarea class="message_field message_custom_css" rows="6" autocomplete="off" cols="65" name="message_data[<?php echo $message_id; ?>][custom_css]" id="message_message_custom_css_<?php echo $message_id; ?>" value="" placeholder="<?php //_e('Add Custom CSS for this message here...', 'icegram' ); ?>"><?php if( isset( $message_custom_css ) ) echo esc_attr( $message_custom_css ); ?></textarea>
461
+ <br>
462
+ <label class="message_label">&nbsp;</label>
463
+ <span class="message_label"> <?php _e('JS', 'icegram' ); ?></span>
464
+ <br>
465
+ <label class="message_label">&nbsp;</label>
466
+ <textarea class="message_field message_custom_js" rows="6" autocomplete="off" cols="65" name="message_data[<?php echo $message_id; ?>][custom_js]" id="message_message_custom_js_<?php echo $message_id; ?>" value="" placeholder="<?php _e('Add Custom javaScript for this message here...', 'icegram' ); ?>"><?php if( isset( $message_custom_js ) ) echo esc_attr( $message_custom_js ); ?></textarea>
467
+ </div>
468
+
469
+ <!-- Custom code : End -->
470
+ </div>
471
+ <input type="hidden" name="message_data[<?php echo $message_id; ?>][id]" value="<?php echo $message_id; ?>">
472
+ <input type="hidden" class="message_id" name="message_id" value="<?php echo $message_id; ?>">
473
+ <?php
474
+
475
+ if( !empty( $action['message_id'] ) ) {
476
+ ?></div>
477
+ <?php
478
+ } else {
479
+
480
+ ?>
481
+ <p class="message_row">
482
+ <label class="message_label">&nbsp;</label>
483
+ <span>
484
+ <span class="shortcode_description admin_field_icon"></span>
485
+ <?php
486
+ echo sprintf(__( 'You may add <code>[%s]</code> where you want to show this message.', 'icegram' ), 'icegram messages="' .$post->ID . '"' );
487
+ ?>
488
+ </span></p>
489
+ <?php
490
+ }
491
+
492
+ }
493
+
494
+ // Used to save the settings which are being made in the message form and added to message page appropriately
495
+ function update_message_settings( $post_id, $post ) {
496
+
497
+ if (empty( $post_id ) || empty( $post ) || empty( $_POST['message_data'] ) || empty( $_POST['message_data'][$post_id] ) ) return;
498
+ if (defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE) return;
499
+ if (is_int( wp_is_post_revision( $post ) )) return;
500
+ if (is_int( wp_is_post_autosave( $post ) )) return;
501
+ if ( empty( $_POST['icegram_message_meta_nonce'] ) || ! wp_verify_nonce( $_POST['icegram_message_meta_nonce'], 'icegram_message_save_data' ) ) return;
502
+ if (! current_user_can( 'edit_post', $post_id )) return;
503
+ if ($post->post_type != 'ig_message') return;
504
+
505
+ $message_data = $_POST['message_data'][$post_id];
506
+ $type = $message_data['type'];
507
+
508
+ if( isset( $message_data['theme'][$type] ) ) {
509
+ $message_data['theme'] = $message_data['theme'][$type];
510
+ } else {
511
+ unset( $message_data['theme'] );
512
+ }
513
+ if( isset( $message_data['animation'][$type] ) ) {
514
+ $message_data['animation'] = $message_data['animation'][$type];
515
+ } else {
516
+ unset( $message_data['animation'] );
517
+ }
518
+ if( isset( $message_data['position'][$type] ) ) {
519
+ $message_data['position'] = $message_data['position'][$type];
520
+ } elseif( isset( $message_data['position']['ig_default'] ) ) {
521
+ $message_data['position'] = $message_data['position']['ig_default'];
522
+ }
523
+
524
+ $message_data = apply_filters( 'icegram_update_message_data', $message_data, $post_id );
525
+ update_post_meta( $post_id, 'icegram_message_data', $message_data );
526
+ update_post_meta( $post_id, 'icegram_message_preview_data', $message_data );
527
+
528
+ }
529
+
530
+ // Additionally save message body content in post_content of post table
531
+ function save_message_in_post_content( $post_data ) {
532
+
533
+ if( !empty( $_POST['post_type'] ) && $_POST['post_type'] == 'ig_message' && !empty( $_POST['message_data'] ) ) {
534
+ $message_id = $_POST['ID'];
535
+ $post_data['post_content'] = $_POST['message_data'][$message_id]['message'];
536
+
537
+ if( isset( $_POST['message_data'][$message_id]['post_title'] ) ) {
538
+
539
+ if( !empty( $_POST['message_data'][$message_id]['post_title'] ) ) {
540
+ $post_data['post_title'] = $_POST['message_data'][$message_id]['post_title'];
541
+ } else {
542
+ $post_data['post_title'] = $_POST['message_data'][$message_id]['headline'];
543
+ }
544
+
545
+ }
546
+ }
547
+ return $post_data;
548
+ }
549
+
550
+ // Add message columns to message dashboard
551
+ function edit_columns( $existing_columns ) {
552
+
553
+ $date = $existing_columns['date'];
554
+ unset( $existing_columns['date'] );
555
+
556
+ $existing_columns['message_type'] = __( 'Type', 'icegram' );
557
+ $existing_columns['message_theme'] = __( 'Theme', 'icegram' );
558
+ $existing_columns['message_thumbnail'] = __( 'Thumbnail', 'icegram' );
559
+ $existing_columns['date'] = $date;
560
+
561
+ return apply_filters( 'icegram_manage_message_columns', $existing_columns );
562
+
563
+ }
564
+
565
+ // Add message columns data to message dashboard
566
+ function custom_columns( $column ) {
567
+ global $post ,$icegram;
568
+
569
+ if( ( is_object( $post ) && $post->post_type != 'ig_message' ) )
570
+ return;
571
+
572
+ $message_data = get_post_meta( $post->ID, 'icegram_message_data', true );
573
+ if ( empty( $message_data['type'] ) ) {
574
+ return;
575
+ }
576
+ $class_name = 'Icegram_Message_Type_' . str_replace(' ', '_', ucwords(str_replace('-', ' ', $message_data['type'])));
577
+ if( !class_exists( $class_name ) ) {
578
+ return;
579
+ }
580
+ $type = ucwords( str_replace( "-", ' ', $message_data['type'] ) );
581
+ $theme = ucwords( str_replace( "-", ' ', $message_data['theme'] ) );
582
+
583
+ $bg_img = $icegram->message_types[ $message_data['type'] ]['themes'][ $message_data['theme'] ]['baseurl'] . $message_data['theme'] . ".png";
584
+
585
+ switch ($column) {
586
+ case 'message_type':
587
+ echo $type;
588
+ break;
589
+
590
+ case 'message_theme':
591
+ echo $theme;
592
+ break;
593
+
594
+ case 'message_thumbnail':
595
+ // echo "<img src='$bg_img' style='max-width: 200px; max-height: 100px;'>";
596
+ echo "<img src='$bg_img' style='max-width: 100%; max-height: 100px;'>";
597
+ break;
598
+
599
+ default:
600
+ do_action( 'icegram_manage_message_custom_column', $column, $message_data );
601
+ break;
602
+
603
+ }
604
+
605
+ }
606
+
607
+ // Create array for settings based on message types
608
+ function message_settings_to_show() {
609
+
610
+ global $icegram;
611
+ $settings = array();
612
+ foreach ( $icegram->message_types as $type => $value ) {
613
+ foreach ( $value['settings'] as $setting => $property ) {
614
+ $settings[$setting][] = $type;
615
+ }
616
+ }
617
+ return apply_filters( 'icegram_message_settings_to_show', $settings );
618
+
619
+ }
620
+
621
+ // Create array for positions available for all message types
622
+ function message_form_layouts_to_show() {
623
+
624
+ global $icegram;
625
+ $form_layouts = array();
626
+ foreach ( $icegram->message_types as $type => $value ) {
627
+ if( empty( $value['settings']['form_layout'] ) )
628
+ continue;
629
+
630
+ if( !empty( $value['settings']['form_layout']['values'] ) ) {
631
+ foreach ( $value['settings']['form_layout']['values'] as $form_layout ) {
632
+ $form_layouts[$form_layout][] = $type;
633
+ }
634
+ }
635
+ }
636
+
637
+ // return apply_filters( 'icegram_message_form_layouts_to_show', $form_layouts );
638
+ return $form_layouts;
639
+
640
+ }
641
+
642
+
643
+ // Create array for positions available for all message types
644
+ function message_positions_to_show() {
645
+
646
+ global $icegram;
647
+ $positions = array();
648
+ foreach ( $icegram->message_types as $type => $value ) {
649
+ if( empty( $value['settings']['position'] ) )
650
+ continue;
651
+
652
+ if( !empty( $value['settings']['position']['values'] ) ) {
653
+ foreach ( $value['settings']['position']['values'] as $position ) {
654
+ $positions[$position][] = $type;
655
+ }
656
+ }
657
+ }
658
+ return apply_filters( 'icegram_message_positions_to_show', $positions );
659
+
660
+ }
661
+
662
+ // Default message data for newly created message
663
+ function default_message_data( $message_type = '' ) {
664
+
665
+ global $icegram;
666
+ $default_themes = array();
667
+ foreach ( $icegram->message_types as $type => $value ) {
668
+ if( isset( $value['settings']['theme']['default'] ) ) {
669
+ $default_themes[$type] = $value['settings']['theme']['default'];
670
+ }
671
+ }
672
+ if( !empty( $message_type ) ) {
673
+ $default_message = $icegram->message_types[$message_type];
674
+ } else {
675
+ $default_message = reset( $icegram->message_types );
676
+ }
677
+ $default_message_data = array( 'type' => $default_message['type'],
678
+ 'position' => ( !empty( $default_message['settings']['position']['values'][0] ) ) ? $default_message['settings']['position']['values'][0] : '',
679
+ 'text_color' => ( !empty( $default_message['settings']['text_color']['default'] ) ) ? $default_message['settings']['text_color']['default'] : '',
680
+ 'bg_color' => ( !empty( $default_message['settings']['bg_color']['default'] ) ) ? $default_message['settings']['bg_color']['default'] : '',
681
+ 'theme' => $default_themes
682
+ );
683
+ return apply_filters( 'icegram_default_message_data', $default_message_data );
684
+ }
685
+
686
+ // Form styles for the form
687
+ //TODO :: check this and do changes if required
688
+ function available_form_styles( ) {
689
+ $available_form_styles = array(
690
+ array('name' => 'Style 0'),
691
+ array('name' => 'Style 1'),
692
+ array('name' => 'Style 2'),
693
+ array('name' => 'Style 3'),
694
+ array('name' => 'Style 4')
695
+ ) ;
696
+ return $available_form_styles;
697
+ }
698
+ // All headline to generate randomly for messages
699
+ function available_headlines( $available_headlines = array() ) {
700
+ $available_headlines = array_merge( $available_headlines, array(
701
+ __( 'Here Is A Method That Is Helping ____ To ____', 'icegram' ),
702
+ __( '__ Little Known Ways To ____', 'icegram' ),
703
+ __( 'Get Rid Of ____ Once And For All', 'icegram' ),
704
+ __( 'How To ____ So You Can ____', 'icegram' ),
705
+ __( 'They Didn\'t Think I Could ____, But I Did', 'icegram' ),
706
+ __( 'How ____ Made Me ____', 'icegram' ),
707
+ __( 'Are You ____ ?', 'icegram' ),
708
+ __( 'Warning: ____ !', 'icegram' ),
709
+ __( 'Do You Make These Mistakes With ____ ?', 'icegram' ),
710
+ __( '7 Ways To ____', 'icegram' ),
711
+ __( 'If You\'re ____, You Can ____', 'icegram' ),
712
+ __( 'Turn your ____ into a ____', 'icegram' ),
713
+ __( 'Want To Be A ____?', 'icegram' ),
714
+ __( 'The Ugly Truth About Your Beautiful ____', 'icegram' ),
715
+ __( 'The Secret to ____ Is Simply ____!', 'icegram' ),
716
+ __( 'The Quickest Way I Know To ____', 'icegram' ),
717
+ __( 'The Lazy Man\'s Way To ____', 'icegram' ),
718
+ __( 'The Amazing Story Of ____ That Requires So Little Of ____ You Could ____', 'icegram' ),
719
+ __( 'The Amazing Secret Of The ____ Genius Who Is Afraid Of ____', 'icegram' ),
720
+ __( 'The 10 Wackiest Ideas That ____... And How You Can Too!', 'icegram' ),
721
+ __( 'The Inside Secrets To ____ With Crazy, Outlandish And Outrageous ____', 'icegram' ),
722
+ __( '____ Like A ____', 'icegram' ),
723
+ __( 'Remember When You Could Have ____, And You Didn\'t?', 'icegram' ),
724
+ __( 'Is The ____ Worth $x To You?', 'icegram' ),
725
+ __( 'Increase your ____, reduce ____, maintain ____ and ____ with ____', 'icegram' ),
726
+ __( 'If You Can ____ You Can ____', 'icegram' ),
727
+ __( 'I Discovered How To ____... Now I\'m Revealing My Secret', 'icegram' ),
728
+ __( 'How To Turn Your ____ Into The Most ____', 'icegram' ),
729
+ __( 'How To Take The Headache Out Of ____', 'icegram' ),
730
+ __( 'How To ____ ... Legally', 'icegram' ),
731
+ __( 'How To ____ That ____', 'icegram' ),
732
+ __( 'How To Discover The ____ That Lies Hidden In Your ____', 'icegram' ),
733
+ __( 'How To ____ Even When Your Not ____', 'icegram' ),
734
+ __( '____ With No ____!', 'icegram' ),
735
+ __( 'Greatest Goldmine of ____ Ever Jammed Into One Big ____', 'icegram' ),
736
+ __( 'Free ____ Tells How To Get Better ____', 'icegram' ),
737
+ __( 'FREE ____ Worth $____ for the first 100 People to take Advantage of this Offer', 'icegram' ),
738
+ __( 'Don\'t Try This With Any Other ____', 'icegram' ),
739
+ __( 'Do You Honestly Want To ____?', 'icegram' ),
740
+ __( 'Discover The Magic ____ That Will Bring You ____ & ____!', 'icegram' ),
741
+ __( '____ Man Reveals A Short-Cut To ____', 'icegram' ),
742
+ __( 'Confessions Of A ____', 'icegram' ),
743
+ __( 'Are You Ready To ____?', 'icegram' ),
744
+ __( 'An Open Letter To Everyone Who ____ More Than ____ Per ____', 'icegram' ),
745
+ __( 'An Amazing ____ You Can Carry In Your ____', 'icegram' ),
746
+ __( '21 Secret ____ that will ____... NOW!', 'icegram' )
747
+ ) );
748
+ return $available_headlines;
749
+ }
750
+
751
+ function add_message_action( $actions, $post ){
752
+ if ($post->post_type != 'ig_message') return $actions;
753
+ $actions['duplicate_message'] = '<a class="ig-duplicate-message" href="post.php?message_id='.$post->ID.'&action=duplicate-message" >'.__('Duplicate' ,'icegram').'</a>';
754
+ return $actions;
755
+ }
756
+
757
+ function duplicate_message(){
758
+ if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'duplicate-message' && !empty($_REQUEST['message_id'])){
759
+ Icegram::duplicate( $_REQUEST['message_id'] );
760
+ }
761
+ }
762
+ }
763
+ }
trunk/classes/class-icegram-message-type.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ if ( class_exists( 'Icegram_Message_Type' ) ) return;
4
+
5
+ /**
6
+ * Class Icegram_Message_Type
7
+ */
8
+ abstract class Icegram_Message_Type {
9
+
10
+ var $type;
11
+ var $name;
12
+ var $basedir;
13
+ var $baseurl;
14
+ var $settings;
15
+ var $version;
16
+
17
+ function __construct( $basedir = '', $baseurl = '' ) {
18
+ $class_name = get_class($this);
19
+ $base = 'Icegram_Message_Type_';
20
+ if ( strpos($class_name, $base) === 0 ) {
21
+ $class_name = str_replace($base, '', $class_name);
22
+ $this->type = str_replace( '_', '-', strtolower($class_name) );
23
+ $this->name = ucwords( str_replace( "-", ' ', $this->type ) );
24
+ $this->basedir = trailingslashit($basedir);
25
+ $this->baseurl = trailingslashit($baseurl);
26
+
27
+ add_filter('icegram_message_types', array( $this, 'init') );
28
+ }
29
+ }
30
+
31
+ function meets_guidelines() {
32
+ if (empty($this->type) || empty($this->name) || !is_dir($this->basedir) ) {
33
+ return false;
34
+ }
35
+ if (!is_file( $this->basedir . '/default.css') || !is_file( $this->basedir . '/main.js') ) {
36
+ return false;
37
+ }
38
+ return true;
39
+ }
40
+
41
+ function init( $message_types = array() ) {
42
+ if (! $this->meets_guidelines() ) {
43
+ return $message_types;
44
+ }
45
+
46
+ // Load themes
47
+ $theme_files = (array) glob( $this->basedir . 'themes/*.png' );
48
+
49
+ if( empty( $theme_files ) ) {
50
+ $theme_files[] = $this->basedir . '/default.css';
51
+ }
52
+
53
+ $themes = array();
54
+ if( !empty( $theme_files ) ) {
55
+ foreach ( $theme_files as $file ) {
56
+ if (is_file ( $file )) {
57
+ $theme = str_replace( ".png", "", basename( $file ) );
58
+ $themes[ $theme ] = array(
59
+ 'name' => ucwords( str_replace( "-", ' ', $theme ) ),
60
+ 'type' => $theme,
61
+ 'basedir' => $this->basedir . 'themes/',
62
+ 'baseurl' => $this->baseurl . 'themes/'
63
+ );
64
+ }
65
+ }
66
+ }
67
+ // Allow other plugins to add themes
68
+ $themes = apply_filters( 'icegram_message_type_themes', $themes ,$this->type);
69
+
70
+ $this->define_settings();
71
+
72
+ $params = array(
73
+ 'name' => $this->name,
74
+ 'type' => $this->type,
75
+ 'basedir' => $this->basedir,
76
+ 'baseurl' => $this->baseurl,
77
+ 'themes' => $themes,
78
+ 'version' => $this->version,
79
+ 'settings' => $this->settings
80
+ );
81
+
82
+ $params = apply_filters( 'icegram_message_type_params_'.$this->type ,$params );
83
+ $params = apply_filters( 'icegram_message_type_params', $params, $this->type );
84
+
85
+ $message_types[ $this->type ] = $params;
86
+ return $message_types;
87
+ }
88
+
89
+ function define_settings() {
90
+ $this->settings = array(
91
+ 'animation' => array( 'type' => 'select' ),
92
+ 'theme' => array( 'type' => 'select' ),
93
+ 'headline' => array( 'type' => 'text' ),
94
+ 'message' => array( 'type' => 'editor' ),
95
+ 'label' => array( 'type' => 'text' ),
96
+ 'link' => array( 'type' => 'text' ),
97
+ 'icon' => array( 'type' => 'text' ),
98
+ 'bg_color' => array( 'type' => 'color' ),
99
+ 'text_color' => array( 'type' => 'color' ),
100
+ 'position' => array( 'type' => 'position' ),
101
+ 'custom_code' => array( 'type' => 'text' ), // TODO :: remove this setting from all MS type
102
+ 'form_layout' => array( 'type' => 'position' ), //TODO :: check this , remove if not required
103
+ 'embed_form' => array( 'type' => 'form' ) // TODO :: remove this setting from all MS type
104
+ );
105
+ // add animations
106
+ $this->settings['animation']['values'] = array( 'slide' => 'Slide', 'appear' => 'Appear' );
107
+ $this->settings['animation']['default'] = 'slide';
108
+
109
+ }
110
+ }
trunk/classes/class-icegram-message.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ /**
4
+ * Icegram Message class
5
+ */
6
+ if ( !class_exists( 'Icegram_Message' ) ) {
7
+
8
+ class Icegram_Message {
9
+
10
+ var $_post;
11
+ var $title;
12
+ var $message_data;
13
+
14
+ function __construct( $message_id = '' ) {
15
+
16
+ if ( !empty( $message_id ) ) {
17
+ $this->_post = get_post( $message_id );
18
+ $this->title = $this->_post->post_title;
19
+ $this->message_data = get_post_meta( $this->_post->ID, 'icegram_message_data', true );
20
+ }
21
+ }
22
+ }
23
+ }
trunk/classes/compat/class-icegram-compat-contact-form-7.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ /**
4
+ * Icegram Campaign Admin class
5
+ */
6
+ if ( !class_exists( 'Icegram_Compat_contact_form_7' ) ) {
7
+ class Icegram_Compat_contact_form_7 extends Icegram_Compat_Base {
8
+
9
+ function __construct() {
10
+ global $icegram;
11
+ parent::__construct();
12
+
13
+ if($icegram->cache_compatibility === 'yes') {
14
+ add_filter('wpcf7_form_action_url', array( &$this, 'change_form_action_url') );
15
+ }
16
+ }
17
+
18
+ function change_form_action_url($url) {
19
+ return Icegram::get_current_page_url();
20
+ }
21
+
22
+
23
+ function render_js() {
24
+ ?>
25
+
26
+ <style type="text/css">
27
+ .ig_hide .wpcf7-response-output,
28
+ .ig_form_container .screen-reader-response{
29
+ display: none !important;
30
+ }
31
+ .ig_show .ig_form_container.layout_bottom .wpcf7-response-output,
32
+ .ig_show .ig_form_container.layout_right .wpcf7-response-output,
33
+ .ig_show .ig_form_container.layout_left .wpcf7-response-output{
34
+ background-color: #FFF;
35
+ color: #444;
36
+ position: absolute;
37
+ }
38
+ .ig_sidebar .ig_form_bottom.ig_show .ig_form_container.layout_bottom .wpcf7-response-output{
39
+ bottom: 0;
40
+ }
41
+ .ig_overlay.ig_form_bottom.ig_show .ig_form_container.layout_bottom .wpcf7-response-output,
42
+ .ig_action_bar.ig_bottom.ig_show .ig_form_container.layout_right .wpcf7-response-output,
43
+ .ig_action_bar.ig_bottom.ig_show .ig_form_container.layout_left .wpcf7-response-output{
44
+ bottom: 100%;
45
+ }
46
+ </style>
47
+
48
+ <script type="text/javascript">
49
+ jQuery(function() {
50
+ jQuery( window ).on( "init.icegram", function(e, ig) {
51
+ // Find and init all CF7 forms within Icegram messages/divs and init them
52
+ if(ig){
53
+ jQuery.each(ig.messages, function(i, msg){
54
+
55
+ jQuery(msg.el).find('form input[name=_wpcf7]').each(function(){
56
+ var form = jQuery(this).closest('form');
57
+ if(form && !form.hasClass('ig_form_init_done')){
58
+ if(form.closest('.ig_form_container').length > 0){
59
+ if(form.parent().find('.screen-reader-response').length == 0){
60
+ form.before('<div class="screen-reader-response"></div>')
61
+ }
62
+ if(form.find('wpcf7-response-output').length == 0){
63
+ form.append('<div class="wpcf7-response-output wpcf7-display-none"></div>')
64
+ }
65
+ form.closest('.ig_form_container').attr('id', form.find('input[name=_wpcf7_unit_tag]').val()); //_wpcf7_unit_tag
66
+ }
67
+ form.wpcf7InitForm();
68
+ form.addClass('ig_form_init_done');
69
+ }
70
+ });
71
+
72
+ });
73
+ }
74
+
75
+ }); // init.icegram
76
+
77
+ // Dismiss response text/div when shown within icegram form container
78
+ jQuery('body').on('click', '.ig_form_container .wpcf7-response-output', function(e) {
79
+ jQuery(e.target).slideUp();
80
+ });
81
+ // Handle CTA function(s) after successful submission of form
82
+ jQuery( window ).on('wpcf7:mailsent', function(e) {
83
+ if( typeof icegram !== 'undefined' ){
84
+ var msg_id = ((jQuery(e.target).closest('[id^=icegram_message_]') || {}).attr('id') || '').split('_').pop() || 0 ;
85
+ var ig_msg = icegram.get_message_by_id(msg_id) || undefined;
86
+ if(ig_msg && ig_msg.data.cta === 'form_via_ajax' && ig_msg.data.cta_option_form_via_ajax == 'hide_on_success'){
87
+ setTimeout(function(){
88
+ ig_msg.hide();
89
+ }, 2000);
90
+ }
91
+ }
92
+ });
93
+ });
94
+ </script>
95
+
96
+ <?php
97
+ }
98
+ }
99
+ }
trunk/classes/compat/class-icegram-compat-gravityforms.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ /**
4
+ * Icegram Campaign Admin class
5
+ */
6
+ if ( !class_exists( 'Icegram_Compat_gravityforms' ) ) {
7
+ class Icegram_Compat_gravityforms extends Icegram_Compat_Base {
8
+
9
+ function __construct() {
10
+ global $icegram;
11
+ parent::__construct();
12
+
13
+ if($icegram->cache_compatibility === 'yes') {
14
+ add_filter( 'gform_form_tag', 'change_form_action_url', 10, 2 );
15
+ function change_form_action_url( $form_tag, $form ) {
16
+ $form_tag = preg_replace( "|action='(.*?)'|", "action='".Icegram::get_current_page_url()."'", $form_tag );
17
+ return $form_tag;
18
+ }
19
+
20
+ }
21
+ }
22
+
23
+ function render_js() {
24
+ ?>
25
+
26
+ <style type="text/css">
27
+ body.ig_laptop div#ui-datepicker-div[style],
28
+ body.ig_tablet div#ui-datepicker-div[style],
29
+ body.ig_mobile div#ui-datepicker-div[style]{
30
+ z-index: 9999999!important;
31
+ }
32
+ </style>
33
+
34
+ <script type="text/javascript">
35
+ jQuery(function() {
36
+ jQuery( window ).on( "init.icegram", function(e, ig) {
37
+ // Find and init all datepicker inside gravityForms
38
+ jQuery('body').on('focus', 'form[id^="gform_"] .datepicker', function(){
39
+ jQuery(this).datepicker();
40
+ });
41
+ }); // init.icegram
42
+ });
43
+ </script>
44
+
45
+ <?php
46
+ }
47
+ }
48
+ }
trunk/classes/ig-mobile-detect.php ADDED
@@ -0,0 +1,1430 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Mobile Detect Library
4
+ * =====================
5
+ *
6
+ * Motto: "Every business should have a mobile detection script to detect mobile readers"
7
+ *
8
+ * Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets).
9
+ * It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.
10
+ *
11
+ * @author Current authors: Serban Ghita <serbanghita@gmail.com>
12
+ * Nick Ilyin <nick.ilyin@gmail.com>
13
+ *
14
+ * Original author: Victor Stanciu <vic.stanciu@gmail.com>
15
+ *
16
+ * @license Code and contributions have 'MIT License'
17
+ * More details: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt
18
+ *
19
+ * @link Homepage: http://mobiledetect.net
20
+ * GitHub Repo: https://github.com/serbanghita/Mobile-Detect
21
+ * Google Code: http://code.google.com/p/php-mobile-detect/
22
+ * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md
23
+ * HOWTO: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples
24
+ *
25
+ * @version 2.8.15
26
+ */
27
+ if ( !class_exists( 'Ig_Mobile_Detect' ) )
28
+ {
29
+ class Ig_Mobile_Detect
30
+ {
31
+ /**
32
+ * Mobile detection type.
33
+ *
34
+ * @deprecated since version 2.6.9
35
+ */
36
+ const DETECTION_TYPE_MOBILE = 'mobile';
37
+
38
+ /**
39
+ * Extended detection type.
40
+ *
41
+ * @deprecated since version 2.6.9
42
+ */
43
+ const DETECTION_TYPE_EXTENDED = 'extended';
44
+
45
+ /**
46
+ * A frequently used regular expression to extract version #s.
47
+ *
48
+ * @deprecated since version 2.6.9
49
+ */
50
+ const VER = '([\w._\+]+)';
51
+
52
+ /**
53
+ * Top-level device.
54
+ */
55
+ const MOBILE_GRADE_A = 'A';
56
+
57
+ /**
58
+ * Mid-level device.
59
+ */
60
+ const MOBILE_GRADE_B = 'B';
61
+
62
+ /**
63
+ * Low-level device.
64
+ */
65
+ const MOBILE_GRADE_C = 'C';
66
+
67
+ /**
68
+ * Stores the version number of the current release.
69
+ */
70
+ const VERSION = '2.8.15';
71
+
72
+ /**
73
+ * A type for the version() method indicating a string return value.
74
+ */
75
+ const VERSION_TYPE_STRING = 'text';
76
+
77
+ /**
78
+ * A type for the version() method indicating a float return value.
79
+ */
80
+ const VERSION_TYPE_FLOAT = 'float';
81
+
82
+ /**
83
+ * A cache for resolved matches
84
+ * @var array
85
+ */
86
+ protected $cache = array();
87
+
88
+ /**
89
+ * The User-Agent HTTP header is stored in here.
90
+ * @var string
91
+ */
92
+ protected $userAgent = null;
93
+
94
+ /**
95
+ * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.
96
+ * @var array
97
+ */
98
+ protected $httpHeaders = array();
99
+
100
+ /**
101
+ * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer.
102
+ * @var array
103
+ */
104
+ protected $cloudfrontHeaders = array();
105
+
106
+ /**
107
+ * The matching Regex.
108
+ * This is good for debug.
109
+ * @var string
110
+ */
111
+ protected $matchingRegex = null;
112
+
113
+ /**
114
+ * The matches extracted from the regex expression.
115
+ * This is good for debug.
116
+ * @var string
117
+ */
118
+ protected $matchesArray = null;
119
+
120
+ /**
121
+ * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED.
122
+ *
123
+ * @deprecated since version 2.6.9
124
+ *
125
+ * @var string
126
+ */
127
+ protected $detectionType = self::DETECTION_TYPE_MOBILE;
128
+
129
+ /**
130
+ * HTTP headers that trigger the 'isMobile' detection
131
+ * to be true.
132
+ *
133
+ * @var array
134
+ */
135
+ protected static $mobileHeaders = array(
136
+
137
+ 'HTTP_ACCEPT' => array('matches' => array(
138
+ // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/
139
+ 'application/x-obml2d',
140
+ // BlackBerry devices.
141
+ 'application/vnd.rim.html',
142
+ 'text/vnd.wap.wml',
143
+ 'application/vnd.wap.xhtml+xml'
144
+ )),
145
+ 'HTTP_X_WAP_PROFILE' => null,
146
+ 'HTTP_X_WAP_CLIENTID' => null,
147
+ 'HTTP_WAP_CONNECTION' => null,
148
+ 'HTTP_PROFILE' => null,
149
+ // Reported by Opera on Nokia devices (eg. C3).
150
+ 'HTTP_X_OPERAMINI_PHONE_UA' => null,
151
+ 'HTTP_X_NOKIA_GATEWAY_ID' => null,
152
+ 'HTTP_X_ORANGE_ID' => null,
153
+ 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null,
154
+ 'HTTP_X_HUAWEI_USERID' => null,
155
+ // Reported by Windows Smartphones.
156
+ 'HTTP_UA_OS' => null,
157
+ // Reported by Verizon, Vodafone proxy system.
158
+ 'HTTP_X_MOBILE_GATEWAY' => null,
159
+ // Seen this on HTC Sensation. SensationXE_Beats_Z715e.
160
+ 'HTTP_X_ATT_DEVICEID' => null,
161
+ // Seen this on a HTC.
162
+ 'HTTP_UA_CPU' => array('matches' => array('ARM')),
163
+ );
164
+
165
+ /**
166
+ * List of mobile devices (phones).
167
+ *
168
+ * @var array
169
+ */
170
+ protected static $phoneDevices = array(
171
+ 'iPhone' => '\biPhone\b|\biPod\b', // |\biTunes
172
+ 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+',
173
+ 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m',
174
+ 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6',
175
+ // @todo: Is 'Dell Streak' a tablet or a phone? ;)
176
+ 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b',
177
+ 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b',
178
+ 'Samsung' => 'Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205',
179
+ 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802)',
180
+ 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533',
181
+ 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile',
182
+ // http://www.micromaxinfo.com/mobiles/smartphones
183
+ // Added because the codes might conflict with Acer Tablets.
184
+ 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b',
185
+ // @todo Complete the regex.
186
+ 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ;
187
+ 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;)
188
+ // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH)
189
+ // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android.
190
+ 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790',
191
+ // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones.
192
+ 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250',
193
+ // http://fr.wikomobile.com
194
+ 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM',
195
+ 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)',
196
+ // Added simvalley mobile just for fun. They have some interesting devices.
197
+ // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html
198
+ 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b',
199
+ // Wolfgang - a brand that is sold by Aldi supermarkets.
200
+ // http://www.wolfgangmobile.com/
201
+ 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q',
202
+ 'Alcatel' => 'Alcatel',
203
+ 'Nintendo' => 'Nintendo 3DS',
204
+ // http://en.wikipedia.org/wiki/Amoi
205
+ 'Amoi' => 'Amoi',
206
+ // http://en.wikipedia.org/wiki/INQ
207
+ 'INQ' => 'INQ',
208
+ // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039
209
+ 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser',
210
+ );
211
+
212
+ /**
213
+ * List of tablet devices.
214
+ *
215
+ * @var array
216
+ */
217
+ protected static $tabletDevices = array(
218
+ 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic.
219
+ 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)|^.*Android.*Nexus(?:(?!Mobile).)*$',
220
+ 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone.
221
+ // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html
222
+ 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI)\b',
223
+ // Only the Surface tablets with Windows RT are considered mobile.
224
+ // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx
225
+ 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)',
226
+ // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT
227
+ 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10',
228
+ // Watch out for PadFone, see #132.
229
+ // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/
230
+ 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C',
231
+ 'BlackBerryTablet' => 'PlayBook|RIM Tablet',
232
+ 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410',
233
+ 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
234
+ 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2',
235
+ // http://www.acer.ro/ac/ro/RO/content/drivers
236
+ // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer)
237
+ // http://us.acer.com/ac/en/US/content/group/tablets
238
+ // http://www.acer.de/ac/de/DE/content/models/tablets/
239
+ // Can conflict with Micromax and Motorola phones codes.
240
+ 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b',
241
+ // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/
242
+ // http://us.toshiba.com/tablets/tablet-finder
243
+ // http://www.toshiba.co.jp/regza/tablet/
244
+ 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO',
245
+ // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html
246
+ // http://www.lg.com/us/tablets
247
+ 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b',
248
+ 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b',
249
+ // Prestigio Tablets http://www.prestigio.com/support
250
+ 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD',
251
+ // http://support.lenovo.com/en_GB/downloads/default.page?#
252
+ 'LenovoTablet' => 'Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)',
253
+ // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets
254
+ 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7',
255
+ // http://www.yarvik.com/en/matrix/tablets/
256
+ 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b',
257
+ 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB',
258
+ 'ArnovaTablet' => 'AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2',
259
+ // http://www.intenso.de/kategorie_en.php?kategorie=33
260
+ // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate
261
+ 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004',
262
+ // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/
263
+ 'IRUTablet' => 'M702pro',
264
+ 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b',
265
+ // http://www.e-boda.ro/tablete-pc.html
266
+ 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)',
267
+ // http://www.allview.ro/produse/droseries/lista-tablete-pc/
268
+ 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)',
269
+ // http://wiki.archosfans.com/index.php?title=Main_Page
270
+ 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b',
271
+ // http://www.ainol.com/plugin.php?identifier=ainol&module=product
272
+ 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark',
273
+ // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER
274
+ // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser
275
+ // http://www.sony.jp/support/tablet/
276
+ 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612',
277
+ // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8
278
+ 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b',
279
+ // db + http://www.cube-tablet.com/buy-products.html
280
+ 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT',
281
+ // http://www.cobyusa.com/?p=pcat&pcat_id=3001
282
+ 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010',
283
+ // http://www.match.net.cn/products.asp
284
+ 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733',
285
+ // http://www.msi.com/support
286
+ // @todo Research the Windows Tablets.
287
+ 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b',
288
+ // @todo http://www.kyoceramobile.com/support/drivers/
289
+ // 'KyoceraTablet' => null,
290
+ // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/
291
+ // 'IntextTablet' => null,
292
+ // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets)
293
+ // http://www.imp3.net/14/show.php?itemid=20454
294
+ 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)',
295
+ // http://www.rock-chips.com/index.php?do=prod&pid=2
296
+ 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A',
297
+ // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/
298
+ 'FlyTablet' => 'IQ310|Fly Vision',
299
+ // http://www.bqreaders.com/gb/tablets-prices-sale.html
300
+ 'bqTablet' => '(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus',
301
+ // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290
302
+ // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets)
303
+ 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim',
304
+ // Nec or Medias Tab
305
+ 'NecTablet' => '\bN-06D|\bN-08D',
306
+ // Pantech Tablets: http://www.pantechusa.com/phones/
307
+ 'PantechTablet' => 'Pantech.*P4100',
308
+ // Broncho Tablets: http://www.broncho.cn/ (hard to find)
309
+ 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)',
310
+ // http://versusuk.com/support.html
311
+ 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b',
312
+ // http://www.zync.in/index.php/our-products/tablet-phablets
313
+ 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900',
314
+ // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
315
+ 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA',
316
+ // https://www.nabitablet.com/
317
+ 'NabiTablet' => 'Android.*\bNabi',
318
+ 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build',
319
+ // French Danew Tablets http://www.danew.com/produits-tablette.php
320
+ 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b',
321
+ // Texet Tablets and Readers http://www.texet.ru/tablet/
322
+ 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE',
323
+ // Avoid detecting 'PLAYSTATION 3' as mobile.
324
+ 'PlaystationTablet' => 'Playstation.*(Portable|Vita)',
325
+ // http://www.trekstor.de/surftabs.html
326
+ 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab',
327
+ // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets
328
+ 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b',
329
+ // http://www.advandigital.com/index.php?link=content-product&jns=JP001
330
+ // because of the short codenames we have to include whitespaces to reduce the possible conflicts.
331
+ 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ',
332
+ // http://www.danytech.com/category/tablet-pc
333
+ 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1',
334
+ // http://www.galapad.net/product.html
335
+ 'GalapadTablet' => 'Android.*\bG1\b',
336
+ // http://www.micromaxinfo.com/tablet/funbook
337
+ 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b',
338
+ // http://www.karbonnmobiles.com/products_tablet.php
339
+ 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b',
340
+ // http://www.myallfine.com/Products.asp
341
+ 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide',
342
+ // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
343
+ 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b',
344
+ // http://www.yonesnav.com/products/products.php
345
+ 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026',
346
+ // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
347
+ // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html)
348
+ 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503',
349
+ // http://www.gloryunion.cn/products.asp
350
+ // http://www.allwinnertech.com/en/apply/mobile.html
351
+ // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB)
352
+ // @todo: Softwiner tablets?
353
+ // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions.
354
+ 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G
355
+ // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118
356
+ 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10',
357
+ // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/
358
+ // @todo: add more tests.
359
+ 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)',
360
+ // http://hclmetablet.com/India/index.php
361
+ 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync',
362
+ // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html
363
+ 'DPSTablet' => 'DPS Dream 9|DPS Dual 7',
364
+ // http://www.visture.com/index.asp
365
+ 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10',
366
+ // http://www.mijncresta.nl/tablet
367
+ 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989',
368
+ // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309
369
+ 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b',
370
+ // Concorde tab
371
+ 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan',
372
+ // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/
373
+ 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042',
374
+ // Modecom Tablets - http://www.modecom.eu/tablets/portal/
375
+ 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003',
376
+ // Vonino Tablets - http://www.vonino.eu/tablets
377
+ 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b',
378
+ // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0
379
+ 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1',
380
+ // Storex Tablets - http://storex.fr/espace_client/support.html
381
+ // @note: no need to add all the tablet codes since they are guided by the first regex.
382
+ 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab',
383
+ // Generic Vodafone tablets.
384
+ 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7',
385
+ // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb
386
+ // Aka: http://www.essentielb.fr/
387
+ 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2',
388
+ // Ross & Moor - http://ross-moor.ru/
389
+ 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711',
390
+ // i-mobile http://product.i-mobilephone.com/Mobile_Device
391
+ 'iMobileTablet' => 'i-mobile i-note',
392
+ // http://www.tolino.de/de/vergleichen/
393
+ 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine',
394
+ // AudioSonic - a Kmart brand
395
+ // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72&currentPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1
396
+ 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b',
397
+ // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/
398
+ // @todo: add them gradually to avoid conflicts.
399
+ 'AMPETablet' => 'Android.* A78 ',
400
+ // Skk Mobile - http://skkmobile.com.ph/product_tablets.php
401
+ 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)',
402
+ // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1
403
+ 'TecnoTablet' => 'TECNO P9',
404
+ // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3
405
+ 'JXDTablet' => 'Android.*\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b',
406
+ // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/
407
+ 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)',
408
+ // http://www.intracon.eu/tablet
409
+ 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10',
410
+ // http://www.xoro.de/produkte/
411
+ // @note: Might be the same brand with 'Simply tablets'
412
+ 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151',
413
+ // http://www1.viewsonic.com/products/computing/tablets/
414
+ 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a',
415
+ // http://www.odys.de/web/internet-tablet_en.html
416
+ 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10',
417
+ // http://www.captiva-power.de/products.html#tablets-en
418
+ 'CaptivaTablet' => 'CAPTIVA PAD',
419
+ // IconBIT - http://www.iconbit.com/products/tablets/
420
+ 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S',
421
+ // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63
422
+ 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi',
423
+ // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price
424
+ 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+',
425
+ 'JaytechTablet' => 'TPC-PA762',
426
+ 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010',
427
+ // http://www.digma.ru/support/download/
428
+ // @todo: Ebooks also (if requested)
429
+ 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b',
430
+ // http://www.evolioshop.com/ro/tablete-pc.html
431
+ // http://www.evolio.ro/support/downloads_static.html?cat=2
432
+ // @todo: Research some more
433
+ 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b',
434
+ // @todo http://www.lavamobiles.com/tablets-data-cards
435
+ 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b',
436
+ // https://www.celkonmobiles.com/?_a=categoryphones&sid=2
437
+ 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b',
438
+ // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab
439
+ 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b',
440
+ // http://www.mi.com/en
441
+ 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b',
442
+ // http://www.nbru.cn/index.html
443
+ 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One',
444
+ // http://navroad.com/products/produkty/tablety/
445
+ 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI',
446
+ // http://www.datawind.com/ubislate/
447
+ 'UbislateTablet' => 'UbiSlate[\s]?7C',
448
+ // http://www.pocketbook-int.com/ru/support
449
+ 'PocketBookTablet' => 'Pocketbook',
450
+ // http://www.tesco.com/direct/hudl/
451
+ 'Hudl' => 'Hudl HT7S3',
452
+ // http://www.telstra.com.au/home-phone/thub-2/
453
+ 'TelstraTablet' => 'T-Hub2',
454
+ 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bJolla\b'
455
+ );
456
+
457
+ /**
458
+ * List of mobile Operating Systems.
459
+ *
460
+ * @var array
461
+ */
462
+ protected static $operatingSystems = array(
463
+ 'AndroidOS' => 'Android',
464
+ 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os',
465
+ 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
466
+ 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
467
+ // @reference: http://en.wikipedia.org/wiki/Windows_Mobile
468
+ 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;',
469
+ // @reference: http://en.wikipedia.org/wiki/Windows_Phone
470
+ // http://wifeng.cn/?r=blog&a=view&id=106
471
+ // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx
472
+ // http://msdn.microsoft.com/library/ms537503.aspx
473
+ 'WindowsPhoneOS' => 'Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;',
474
+ 'iOS' => '\biPhone.*Mobile|\biPod|\biPad',
475
+ // http://en.wikipedia.org/wiki/MeeGo
476
+ // @todo: research MeeGo in UAs
477
+ 'MeeGoOS' => 'MeeGo',
478
+ // http://en.wikipedia.org/wiki/Maemo
479
+ // @todo: research Maemo in UAs
480
+ 'MaemoOS' => 'Maemo',
481
+ 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135
482
+ 'webOS' => 'webOS|hpwOS',
483
+ 'badaOS' => '\bBada\b',
484
+ 'BREWOS' => 'BREW',
485
+ );
486
+
487
+ /**
488
+ * List of mobile User Agents.
489
+ *
490
+ * @var array
491
+ */
492
+ protected static $browsers = array(
493
+ // @reference: https://developers.google.com/chrome/mobile/docs/user-agent
494
+ 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?',
495
+ 'Dolfin' => '\bDolfin\b',
496
+ 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+',
497
+ 'Skyfire' => 'Skyfire',
498
+ 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+
499
+ 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile',
500
+ 'Bolt' => 'bolt',
501
+ 'TeaShark' => 'teashark',
502
+ 'Blazer' => 'Blazer',
503
+ // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3
504
+ 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari',
505
+ // http://en.wikipedia.org/wiki/Midori_(web_browser)
506
+ //'Midori' => 'midori',
507
+ 'Tizen' => 'Tizen',
508
+ 'UCBrowser' => 'UC.*Browser|UCWEB',
509
+ 'baiduboxapp' => 'baiduboxapp',
510
+ 'baidubrowser' => 'baidubrowser',
511
+ // https://github.com/serbanghita/Mobile-Detect/issues/7
512
+ 'DiigoBrowser' => 'DiigoBrowser',
513
+ // http://www.puffinbrowser.com/index.php
514
+ 'Puffin' => 'Puffin',
515
+ // http://mercury-browser.com/index.html
516
+ 'Mercury' => '\bMercury\b',
517
+ // http://en.wikipedia.org/wiki/Obigo_Browser
518
+ 'ObigoBrowser' => 'Obigo',
519
+ // http://en.wikipedia.org/wiki/NetFront
520
+ 'NetFront' => 'NF-Browser',
521
+ // @reference: http://en.wikipedia.org/wiki/Minimo
522
+ // http://en.wikipedia.org/wiki/Vision_Mobile_Browser
523
+ 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
524
+ );
525
+
526
+ /**
527
+ * Utilities.
528
+ *
529
+ * @var array
530
+ */
531
+ protected static $utilities = array(
532
+ // Experimental. When a mobile device wants to switch to 'Desktop Mode'.
533
+ // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/
534
+ // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011
535
+ // https://developers.facebook.com/docs/sharing/best-practices
536
+ 'Bot' => 'Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor',
537
+ 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2',
538
+ 'DesktopMode' => 'WPDesktop',
539
+ 'TV' => 'SonyDTV|HbbTV', // experimental
540
+ 'WebKit' => '(webkit)[ /]([\w.]+)',
541
+ // @todo: Include JXD consoles.
542
+ 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\b',
543
+ 'Watch' => 'SM-V700',
544
+ );
545
+
546
+ /**
547
+ * All possible HTTP headers that represent the
548
+ * User-Agent string.
549
+ *
550
+ * @var array
551
+ */
552
+ protected static $uaHttpHeaders = array(
553
+ // The default User-Agent string.
554
+ 'HTTP_USER_AGENT',
555
+ // Header can occur on devices using Opera Mini.
556
+ 'HTTP_X_OPERAMINI_PHONE_UA',
557
+ // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
558
+ 'HTTP_X_DEVICE_USER_AGENT',
559
+ 'HTTP_X_ORIGINAL_USER_AGENT',
560
+ 'HTTP_X_SKYFIRE_PHONE',
561
+ 'HTTP_X_BOLT_PHONE_UA',
562
+ 'HTTP_DEVICE_STOCK_UA',
563
+ 'HTTP_X_UCBROWSER_DEVICE_UA'
564
+ );
565
+
566
+ /**
567
+ * The individual segments that could exist in a User-Agent string. VER refers to the regular
568
+ * expression defined in the constant self::VER.
569
+ *
570
+ * @var array
571
+ */
572
+ protected static $properties = array(
573
+
574
+ // Build
575
+ 'Mobile' => 'Mobile/[VER]',
576
+ 'Build' => 'Build/[VER]',
577
+ 'Version' => 'Version/[VER]',
578
+ 'VendorID' => 'VendorID/[VER]',
579
+
580
+ // Devices
581
+ 'iPad' => 'iPad.*CPU[a-z ]+[VER]',
582
+ 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]',
583
+ 'iPod' => 'iPod.*CPU[a-z ]+[VER]',
584
+ //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'),
585
+ 'Kindle' => 'Kindle/[VER]',
586
+
587
+ // Browser
588
+ 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'),
589
+ 'Coast' => array('Coast/[VER]'),
590
+ 'Dolfin' => 'Dolfin/[VER]',
591
+ // @reference: https://developer.mozilla.org/en-US/docs/User_Agent_Strings_Reference
592
+ 'Firefox' => 'Firefox/[VER]',
593
+ 'Fennec' => 'Fennec/[VER]',
594
+ // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
595
+ // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx
596
+ 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'),
597
+ // http://en.wikipedia.org/wiki/NetFront
598
+ 'NetFront' => 'NetFront/[VER]',
599
+ 'NokiaBrowser' => 'NokiaBrowser/[VER]',
600
+ 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ),
601
+ 'Opera Mini' => 'Opera Mini/[VER]',
602
+ 'Opera Mobi' => 'Version/[VER]',
603
+ 'UC Browser' => 'UC Browser[VER]',
604
+ 'MQQBrowser' => 'MQQBrowser/[VER]',
605
+ 'MicroMessenger' => 'MicroMessenger/[VER]',
606
+ 'baiduboxapp' => 'baiduboxapp/[VER]',
607
+ 'baidubrowser' => 'baidubrowser/[VER]',
608
+ 'Iron' => 'Iron/[VER]',
609
+ // @note: Safari 7534.48.3 is actually Version 5.1.
610
+ // @note: On BlackBerry the Version is overwriten by the OS.
611
+ 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ),
612
+ 'Skyfire' => 'Skyfire/[VER]',
613
+ 'Tizen' => 'Tizen/[VER]',
614
+ 'Webkit' => 'webkit[ /][VER]',
615
+
616
+ // Engine
617
+ 'Gecko' => 'Gecko/[VER]',
618
+ 'Trident' => 'Trident/[VER]',
619
+ 'Presto' => 'Presto/[VER]',
620
+
621
+ // OS
622
+ 'iOS' => ' \bi?OS\b [VER][ ;]{1}',
623
+ 'Android' => 'Android [VER]',
624
+ 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'),
625
+ 'BREW' => 'BREW [VER]',
626
+ 'Java' => 'Java/[VER]',
627
+ // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx
628
+ // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases
629
+ 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'),
630
+ 'Windows Phone' => 'Windows Phone [VER]',
631
+ 'Windows CE' => 'Windows CE/[VER]',
632
+ // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd
633
+ 'Windows NT' => 'Windows NT [VER]',
634
+ 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'),
635
+ 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'),
636
+ );
637
+
638
+ /**
639
+ * Construct an instance of this class.
640
+ *
641
+ * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored.
642
+ * If left empty, will use the global _SERVER['HTTP_*'] vars instead.
643
+ * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT
644
+ * from the $headers array instead.
645
+ */
646
+ public function __construct(
647
+ array $headers = null,
648
+ $userAgent = null
649
+ ) {
650
+ $this->setHttpHeaders($headers);
651
+ $this->setUserAgent($userAgent);
652
+ }
653
+
654
+ /**
655
+ * Get the current script version.
656
+ * This is useful for the demo.php file,
657
+ * so people can check on what version they are testing
658
+ * for mobile devices.
659
+ *
660
+ * @return string The version number in semantic version format.
661
+ */
662
+ public static function getScriptVersion()
663
+ {
664
+ return self::VERSION;
665
+ }
666
+
667
+ /**
668
+ * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
669
+ *
670
+ * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
671
+ * the headers. The default null is left for backwards compatibilty.
672
+ */
673
+ public function setHttpHeaders($httpHeaders = null)
674
+ {
675
+ // use global _SERVER if $httpHeaders aren't defined
676
+ if (!is_array($httpHeaders) || !count($httpHeaders)) {
677
+ $httpHeaders = $_SERVER;
678
+ }
679
+
680
+ // clear existing headers
681
+ $this->httpHeaders = array();
682
+
683
+ // Only save HTTP headers. In PHP land, that means only _SERVER vars that
684
+ // start with HTTP_.
685
+ foreach ($httpHeaders as $key => $value) {
686
+ if (substr($key, 0, 5) === 'HTTP_') {
687
+ $this->httpHeaders[$key] = $value;
688
+ }
689
+ }
690
+
691
+ // In case we're dealing with CloudFront, we need to know.
692
+ $this->setCfHeaders($httpHeaders);
693
+ }
694
+
695
+ /**
696
+ * Retrieves the HTTP headers.
697
+ *
698
+ * @return array
699
+ */
700
+ public function getHttpHeaders()
701
+ {
702
+ return $this->httpHeaders;
703
+ }
704
+
705
+ /**
706
+ * Retrieves a particular header. If it doesn't exist, no exception/error is caused.
707
+ * Simply null is returned.
708
+ *
709
+ * @param string $header The name of the header to retrieve. Can be HTTP compliant such as
710
+ * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
711
+ * all-caps, HTTP_ prefixed, underscore seperated awesomeness.
712
+ *
713
+ * @return string|null The value of the header.
714
+ */
715
+ public function getHttpHeader($header)
716
+ {
717
+ // are we using PHP-flavored headers?
718
+ if (strpos($header, '_') === false) {
719
+ $header = str_replace('-', '_', $header);
720
+ $header = strtoupper($header);
721
+ }
722
+
723
+ // test the alternate, too
724
+ $altHeader = 'HTTP_' . $header;
725
+
726
+ //Test both the regular and the HTTP_ prefix
727
+ if (isset($this->httpHeaders[$header])) {
728
+ return $this->httpHeaders[$header];
729
+ } elseif (isset($this->httpHeaders[$altHeader])) {
730
+ return $this->httpHeaders[$altHeader];
731
+ }
732
+
733
+ return null;
734
+ }
735
+
736
+ public function getMobileHeaders()
737
+ {
738
+ return self::$mobileHeaders;
739
+ }
740
+
741
+ /**
742
+ * Get all possible HTTP headers that
743
+ * can contain the User-Agent string.
744
+ *
745
+ * @return array List of HTTP headers.
746
+ */
747
+ public function getUaHttpHeaders()
748
+ {
749
+ return self::$uaHttpHeaders;
750
+ }
751
+
752
+
753
+ /**
754
+ * Set CloudFront headers
755
+ * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device
756
+ *
757
+ * @param array $cfHeaders List of HTTP headers
758
+ *
759
+ * @return boolean If there were CloudFront headers to be set
760
+ */
761
+ public function setCfHeaders($cfHeaders = null) {
762
+ // use global _SERVER if $cfHeaders aren't defined
763
+ if (!is_array($cfHeaders) || !count($cfHeaders)) {
764
+ $cfHeaders = $_SERVER;
765
+ }
766
+
767
+ // clear existing headers
768
+ $this->cloudfrontHeaders = array();
769
+
770
+ // Only save CLOUDFRONT headers. In PHP land, that means only _SERVER vars that
771
+ // start with cloudfront-.
772
+ $response = false;
773
+ foreach ($cfHeaders as $key => $value) {
774
+ if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') {
775
+ $this->cloudfrontHeaders[strtoupper($key)] = $value;
776
+ $response = true;
777
+ }
778
+ }
779
+
780
+ return $response;
781
+ }
782
+
783
+ /**
784
+ * Retrieves the cloudfront headers.
785
+ *
786
+ * @return array
787
+ */
788
+ public function getCfHeaders()
789
+ {
790
+ return $this->cloudfrontHeaders;
791
+ }
792
+
793
+ /**
794
+ * Set the User-Agent to be used.
795
+ *
796
+ * @param string $userAgent The user agent string to set.
797
+ *
798
+ * @return string|null
799
+ */
800
+ public function setUserAgent($userAgent = null)
801
+ {
802
+ // Invalidate cache due to #375
803
+ $this->cache = array();
804
+
805
+ if (false === empty($userAgent)) {
806
+ return $this->userAgent = $userAgent;
807
+ } else {
808
+ $this->userAgent = null;
809
+ foreach ($this->getUaHttpHeaders() as $altHeader) {
810
+ if (false === empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban)
811
+ $this->userAgent .= $this->httpHeaders[$altHeader] . " ";
812
+ }
813
+ }
814
+
815
+ if (!empty($this->userAgent)) {
816
+ return $this->userAgent = trim($this->userAgent);
817
+ }
818
+ }
819
+
820
+ if (count($this->getCfHeaders()) > 0) {
821
+ return $this->userAgent = 'Amazon CloudFront';
822
+ }
823
+ return $this->userAgent = null;
824
+ }
825
+
826
+ /**
827
+ * Retrieve the User-Agent.
828
+ *
829
+ * @return string|null The user agent if it's set.
830
+ */
831
+ public function getUserAgent()
832
+ {
833
+ return $this->userAgent;
834
+ }
835
+
836
+ /**
837
+ * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or
838
+ * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.
839
+ *
840
+ * @deprecated since version 2.6.9
841
+ *
842
+ * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default
843
+ * parameter is null which will default to self::DETECTION_TYPE_MOBILE.
844
+ */
845
+ public function setDetectionType($type = null)
846
+ {
847
+ if ($type === null) {
848
+ $type = self::DETECTION_TYPE_MOBILE;
849
+ }
850
+
851
+ if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) {
852
+ return;
853
+ }
854
+
855
+ $this->detectionType = $type;
856
+ }
857
+
858
+ public function getMatchingRegex()
859
+ {
860
+ return $this->matchingRegex;
861
+ }
862
+
863
+ public function getMatchesArray()
864
+ {
865
+ return $this->matchesArray;
866
+ }
867
+
868
+ /**
869
+ * Retrieve the list of known phone devices.
870
+ *
871
+ * @return array List of phone devices.
872
+ */
873
+ public static function getPhoneDevices()
874
+ {
875
+ return self::$phoneDevices;
876
+ }
877
+
878
+ /**
879
+ * Retrieve the list of known tablet devices.
880
+ *
881
+ * @return array List of tablet devices.
882
+ */
883
+ public static function getTabletDevices()
884
+ {
885
+ return self::$tabletDevices;
886
+ }
887
+
888
+ /**
889
+ * Alias for getBrowsers() method.
890
+ *
891
+ * @return array List of user agents.
892
+ */
893
+ public static function getUserAgents()
894
+ {
895
+ return self::getBrowsers();
896
+ }
897
+
898
+ /**
899
+ * Retrieve the list of known browsers. Specifically, the user agents.
900
+ *
901
+ * @return array List of browsers / user agents.
902
+ */
903
+ public static function getBrowsers()
904
+ {
905
+ return self::$browsers;
906
+ }
907
+
908
+ /**
909
+ * Retrieve the list of known utilities.
910
+ *
911
+ * @return array List of utilities.
912
+ */
913
+ public static function getUtilities()
914
+ {
915
+ return self::$utilities;
916
+ }
917
+
918
+ /**
919
+ * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
920
+ *
921
+ * @deprecated since version 2.6.9
922
+ *
923
+ * @return array All the rules (but not extended).
924
+ */
925
+ public static function getMobileDetectionRules()
926
+ {
927
+ static $rules;
928
+
929
+ if (!$rules) {
930
+ $rules = array_merge(
931
+ self::$phoneDevices,
932
+ self::$tabletDevices,
933
+ self::$operatingSystems,
934
+ self::$browsers
935
+ );
936
+ }
937
+
938
+ return $rules;
939
+
940
+ }
941
+
942
+ /**
943
+ * Method gets the mobile detection rules + utilities.
944
+ * The reason this is separate is because utilities rules
945
+ * don't necessary imply mobile. This method is used inside
946
+ * the new $detect->is('stuff') method.
947
+ *
948
+ * @deprecated since version 2.6.9
949
+ *
950
+ * @return array All the rules + extended.
951
+ */
952
+ public function getMobileDetectionRulesExtended()
953
+ {
954
+ static $rules;
955
+
956
+ if (!$rules) {
957
+ // Merge all rules together.
958
+ $rules = array_merge(
959
+ self::$phoneDevices,
960
+ self::$tabletDevices,
961
+ self::$operatingSystems,
962
+ self::$browsers,
963
+ self::$utilities
964
+ );
965
+ }
966
+
967
+ return $rules;
968
+ }
969
+
970
+ /**
971
+ * Retrieve the current set of rules.
972
+ *
973
+ * @deprecated since version 2.6.9
974
+ *
975
+ * @return array
976
+ */
977
+ public function getRules()
978
+ {
979
+ if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) {
980
+ return self::getMobileDetectionRulesExtended();
981
+ } else {
982
+ return self::getMobileDetectionRules();
983
+ }
984
+ }
985
+
986
+ /**
987
+ * Retrieve the list of mobile operating systems.
988
+ *
989
+ * @return array The list of mobile operating systems.
990
+ */
991
+ public static function getOperatingSystems()
992
+ {
993
+ return self::$operatingSystems;
994
+ }
995
+
996
+ /**
997
+ * Check the HTTP headers for signs of mobile.
998
+ * This is the fastest mobile check possible; it's used
999
+ * inside isMobile() method.
1000
+ *
1001
+ * @return bool
1002
+ */
1003
+ public function checkHttpHeadersForMobile()
1004
+ {
1005
+
1006
+ foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) {
1007
+ if (isset($this->httpHeaders[$mobileHeader])) {
1008
+ if (is_array($matchType['matches'])) {
1009
+ foreach ($matchType['matches'] as $_match) {
1010
+ if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) {
1011
+ return true;
1012
+ }
1013
+ }
1014
+
1015
+ return false;
1016
+ } else {
1017
+ return true;
1018
+ }
1019
+ }
1020
+ }
1021
+
1022
+ return false;
1023
+
1024
+ }
1025
+
1026
+ /**
1027
+ * Magic overloading method.
1028
+ *
1029
+ * @method boolean is[...]()
1030
+ * @param string $name
1031
+ * @param array $arguments
1032
+ * @return mixed
1033
+ * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is'
1034
+ */
1035
+ public function __call($name, $arguments)
1036
+ {
1037
+ // make sure the name starts with 'is', otherwise
1038
+ if (substr($name, 0, 2) !== 'is') {
1039
+ throw new BadMethodCallException("No such method exists: $name");
1040
+ }
1041
+
1042
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
1043
+
1044
+ $key = substr($name, 2);
1045
+
1046
+ return $this->matchUAAgainstKey($key);
1047
+ }
1048
+
1049
+ /**
1050
+ * Find a detection rule that matches the current User-agent.
1051
+ *
1052
+ * @param null $userAgent deprecated
1053
+ * @return boolean
1054
+ */
1055
+ protected function matchDetectionRulesAgainstUA($userAgent = null)
1056
+ {
1057
+ // Begin general search.
1058
+ foreach ($this->getRules() as $_regex) {
1059
+ if (empty($_regex)) {
1060
+ continue;
1061
+ }
1062
+
1063
+ if ($this->match($_regex, $userAgent)) {
1064
+ return true;
1065
+ }
1066
+ }
1067
+
1068
+ return false;
1069
+ }
1070
+
1071
+ /**
1072
+ * Search for a certain key in the rules array.
1073
+ * If the key is found the try to match the corresponding
1074
+ * regex against the User-Agent.
1075
+ *
1076
+ * @param string $key
1077
+ *
1078
+ * @return boolean
1079
+ */
1080
+ protected function matchUAAgainstKey($key)
1081
+ {
1082
+ // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc.
1083
+ $key = strtolower($key);
1084
+ if (false === isset($this->cache[$key])) {
1085
+
1086
+ // change the keys to lower case
1087
+ $_rules = array_change_key_case($this->getRules());
1088
+
1089
+ if (false === empty($_rules[$key])) {
1090
+ $this->cache[$key] = $this->match($_rules[$key]);
1091
+ }
1092
+
1093
+ if (false === isset($this->cache[$key])) {
1094
+ $this->cache[$key] = false;
1095
+ }
1096
+ }
1097
+
1098
+ return $this->cache[$key];
1099
+ }
1100
+
1101
+ /**
1102
+ * Check if the device is mobile.
1103
+ * Returns true if any type of mobile device detected, including special ones
1104
+ * @param null $userAgent deprecated
1105
+ * @param null $httpHeaders deprecated
1106
+ * @return bool
1107
+ */
1108
+ public function isMobile($userAgent = null, $httpHeaders = null)
1109
+ {
1110
+
1111
+ if ($httpHeaders) {
1112
+ $this->setHttpHeaders($httpHeaders);
1113
+ }
1114
+
1115
+ if ($userAgent) {
1116
+ $this->setUserAgent($userAgent);
1117
+ }
1118
+
1119
+ // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
1120
+ if ($this->getUserAgent() === 'Amazon CloudFront') {
1121
+ $cfHeaders = $this->getCfHeaders();
1122
+ if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') {
1123
+ return true;
1124
+ }
1125
+ }
1126
+
1127
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
1128
+
1129
+ if ($this->checkHttpHeadersForMobile()) {
1130
+ return true;
1131
+ } else {
1132
+ return $this->matchDetectionRulesAgainstUA();
1133
+ }
1134
+
1135
+ }
1136
+
1137
+ /**
1138
+ * Check if the device is a tablet.
1139
+ * Return true if any type of tablet device is detected.
1140
+ *
1141
+ * @param string $userAgent deprecated
1142
+ * @param array $httpHeaders deprecated
1143
+ * @return bool
1144
+ */
1145
+ public function isTablet($userAgent = null, $httpHeaders = null)
1146
+ {
1147
+ // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
1148
+ if ($this->getUserAgent() === 'Amazon CloudFront') {
1149
+ $cfHeaders = $this->getCfHeaders();
1150
+ if(array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') {
1151
+ return true;
1152
+ }
1153
+ }
1154
+
1155
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
1156
+
1157
+ foreach (self::$tabletDevices as $_regex) {
1158
+ if ($this->match($_regex, $userAgent)) {
1159
+ return true;
1160
+ }
1161
+ }
1162
+
1163
+ return false;
1164
+ }
1165
+
1166
+ /**
1167
+ * This method checks for a certain property in the
1168
+ * userAgent.
1169
+ * @todo: The httpHeaders part is not yet used.
1170
+ *
1171
+ * @param string $key
1172
+ * @param string $userAgent deprecated
1173
+ * @param string $httpHeaders deprecated
1174
+ * @return bool|int|null
1175
+ */
1176
+ public function is($key, $userAgent = null, $httpHeaders = null)
1177
+ {
1178
+ // Set the UA and HTTP headers only if needed (eg. batch mode).
1179
+ if ($httpHeaders) {
1180
+ $this->setHttpHeaders($httpHeaders);
1181
+ }
1182
+
1183
+ if ($userAgent) {
1184
+ $this->setUserAgent($userAgent);
1185
+ }
1186
+
1187
+ $this->setDetectionType(self::DETECTION_TYPE_EXTENDED);
1188
+
1189
+ return $this->matchUAAgainstKey($key);
1190
+ }
1191
+
1192
+ /**
1193
+ * Some detection rules are relative (not standard),
1194
+ * because of the diversity of devices, vendors and
1195
+ * their conventions in representing the User-Agent or
1196
+ * the HTTP headers.
1197
+ *
1198
+ * This method will be used to check custom regexes against
1199
+ * the User-Agent string.
1200
+ *
1201
+ * @param $regex
1202
+ * @param string $userAgent
1203
+ * @return bool
1204
+ *
1205
+ * @todo: search in the HTTP headers too.
1206
+ */
1207
+ public function match($regex, $userAgent = null)
1208
+ {
1209
+ $match = (bool) preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches);
1210
+ // If positive match is found, store the results for debug.
1211
+ if ($match) {
1212
+ $this->matchingRegex = $regex;
1213
+ $this->matchesArray = $matches;
1214
+ }
1215
+
1216
+ return $match;
1217
+ }
1218
+
1219
+ /**
1220
+ * Get the properties array.
1221
+ *
1222
+ * @return array
1223
+ */
1224
+ public static function getProperties()
1225
+ {
1226
+ return self::$properties;
1227
+ }
1228
+
1229
+ /**
1230
+ * Prepare the version number.
1231
+ *
1232
+ * @todo Remove the error supression from str_replace() call.
1233
+ *
1234
+ * @param string $ver The string version, like "2.6.21.2152";
1235
+ *
1236
+ * @return float
1237
+ */
1238
+ public function prepareVersionNo($ver)
1239
+ {
1240
+ $ver = str_replace(array('_', ' ', '/'), '.', $ver);
1241
+ $arrVer = explode('.', $ver, 2);
1242
+
1243
+ if (isset($arrVer[1])) {
1244
+ $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions.
1245
+ }
1246
+
1247
+ return (float) implode('.', $arrVer);
1248
+ }
1249
+
1250
+ /**
1251
+ * Check the version of the given property in the User-Agent.
1252
+ * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)
1253
+ *
1254
+ * @param string $propertyName The name of the property. See self::getProperties() array
1255
+ * keys for all possible properties.
1256
+ * @param string $type Either self::VERSION_TYPE_STRING to get a string value or
1257
+ * self::VERSION_TYPE_FLOAT indicating a float value. This parameter
1258
+ * is optional and defaults to self::VERSION_TYPE_STRING. Passing an
1259
+ * invalid parameter will default to the this type as well.
1260
+ *
1261
+ * @return string|float The version of the property we are trying to extract.
1262
+ */
1263
+ public function version($propertyName, $type = self::VERSION_TYPE_STRING)
1264
+ {
1265
+ if (empty($propertyName)) {
1266
+ return false;
1267
+ }
1268
+
1269
+ // set the $type to the default if we don't recognize the type
1270
+ if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) {
1271
+ $type = self::VERSION_TYPE_STRING;
1272
+ }
1273
+
1274
+ $properties = self::getProperties();
1275
+
1276
+ // Check if the property exists in the properties array.
1277
+ if (true === isset($properties[$propertyName])) {
1278
+
1279
+ // Prepare the pattern to be matched.
1280
+ // Make sure we always deal with an array (string is converted).
1281
+ $properties[$propertyName] = (array) $properties[$propertyName];
1282
+
1283
+ foreach ($properties[$propertyName] as $propertyMatchString) {
1284
+
1285
+ $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString);
1286
+
1287
+ // Identify and extract the version.
1288
+ preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match);
1289
+
1290
+ if (false === empty($match[1])) {
1291
+ $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]);
1292
+
1293
+ return $version;
1294
+ }
1295
+
1296
+ }
1297
+
1298
+ }
1299
+
1300
+ return false;
1301
+ }
1302
+
1303
+ /**
1304
+ * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.
1305
+ *
1306
+ * @return string One of the self::MOBILE_GRADE_* constants.
1307
+ */
1308
+ public function mobileGrade()
1309
+ {
1310
+ $isMobile = $this->isMobile();
1311
+
1312
+ if (
1313
+ // Apple iOS 4-7.0 – Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3 / 5.1 / 6.1), iPad 3 (5.1 / 6.0), iPad Mini (6.1), iPad Retina (7.0), iPhone 3GS (4.3), iPhone 4 (4.3 / 5.1), iPhone 4S (5.1 / 6.0), iPhone 5 (6.0), and iPhone 5S (7.0)
1314
+ $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 ||
1315
+ $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 ||
1316
+ $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 ||
1317
+
1318
+ // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)
1319
+ // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM
1320
+ // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices
1321
+ // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7
1322
+ ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) ||
1323
+
1324
+ // Windows Phone 7.5-8 - Tested on the HTC Surround (7.5), HTC Trophy (7.5), LG-E900 (7.5), Nokia 800 (7.8), HTC Mazaa (7.8), Nokia Lumia 520 (8), Nokia Lumia 920 (8), HTC 8x (8)
1325
+ $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 ||
1326
+
1327
+ // Tested on the Torch 9800 (6) and Style 9670 (6), BlackBerry® Torch 9810 (7), BlackBerry Z10 (10)
1328
+ $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 ||
1329
+ // Blackberry Playbook (1.0-2.0) - Tested on PlayBook
1330
+ $this->match('Playbook.*Tablet') ||
1331
+
1332
+ // Palm WebOS (1.4-3.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0), HP TouchPad (3.0)
1333
+ ( $this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi') ) ||
1334
+ // Palm WebOS 3.0 - Tested on HP TouchPad
1335
+ $this->match('hp.*TouchPad') ||
1336
+
1337
+ // Firefox Mobile 18 - Tested on Android 2.3 and 4.1 devices
1338
+ ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18 ) ||
1339
+
1340
+ // Chrome for Android - Tested on Android 4.0, 4.1 device
1341
+ ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0 ) ||
1342
+
1343
+ // Skyfire 4.1 - Tested on Android 2.3 device
1344
+ ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) ||
1345
+
1346
+ // Opera Mobile 11.5-12: Tested on Android 2.3
1347
+ ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS') ) ||
1348
+
1349
+ // Meego 1.2 - Tested on Nokia 950 and N9
1350
+ $this->is('MeeGoOS') ||
1351
+
1352
+ // Tizen (pre-release) - Tested on early hardware
1353
+ $this->is('Tizen') ||
1354
+
1355
+ // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser
1356
+ // @todo: more tests here!
1357
+ $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 ||
1358
+
1359
+ // UC Browser - Tested on Android 2.3 device
1360
+ ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) ||
1361
+
1362
+ // Kindle 3 and Fire - Tested on the built-in WebKit browser for each
1363
+ ( $this->match('Kindle Fire') ||
1364
+ $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0 ) ||
1365
+
1366
+ // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet
1367
+ $this->is('AndroidOS') && $this->is('NookTablet') ||
1368
+
1369
+ // Chrome Desktop 16-24 - Tested on OS X 10.7 and Windows 7
1370
+ $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile ||
1371
+
1372
+ // Safari Desktop 5-6 - Tested on OS X 10.7 and Windows 7
1373
+ $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile ||
1374
+
1375
+ // Firefox Desktop 10-18 - Tested on OS X 10.7 and Windows 7
1376
+ $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile ||
1377
+
1378
+ // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7
1379
+ $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile ||
1380
+
1381
+ // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7
1382
+ $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile
1383
+ ){
1384
+ return self::MOBILE_GRADE_A;
1385
+ }
1386
+
1387
+ if (
1388
+ $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 ||
1389
+ $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<4.3 ||
1390
+ $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT)<4.3 ||
1391
+
1392
+ // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770
1393
+ $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 ||
1394
+
1395
+ //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3
1396
+ ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 &&
1397
+ ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS')) ) ||
1398
+
1399
+ // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)
1400
+ $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||
1401
+
1402
+ // @todo: report this (tested on Nokia N71)
1403
+ $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS')
1404
+ ){
1405
+ return self::MOBILE_GRADE_B;
1406
+ }
1407
+
1408
+ if (
1409
+ // Blackberry 4.x - Tested on the Curve 8330
1410
+ $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 ||
1411
+ // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)
1412
+ $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 ||
1413
+
1414
+ // Tested on original iPhone (3.1), iPhone 3 (3.2)
1415
+ $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 ||
1416
+ $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 ||
1417
+ $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 ||
1418
+
1419
+ // Internet Explorer 7 and older - Tested on Windows XP
1420
+ $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile
1421
+ ){
1422
+ return self::MOBILE_GRADE_C;
1423
+ }
1424
+
1425
+ // All older smartphone platforms and featurephones - Any device that doesn't support media queries
1426
+ // will receive the basic, C grade experience.
1427
+ return self::MOBILE_GRADE_C;
1428
+ }
1429
+ }
1430
+ }
trunk/gallery.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style type="text/css">
2
+ .ig-gallery-wrap .theme-browser .theme .theme-installed{
3
+ /*position: relative;*/
4
+ width: 2em;
5
+ padding: 0;
6
+ height: 2em;
7
+ }
8
+ .theme-browser .theme .theme-installed:before{
9
+ font-size: 30px;
10
+ top:-2px;
11
+ left:-4px;
12
+ }
13
+ .ig-gallery-wrap .theme-browser .theme{
14
+ margin: 0 1% 1% 0;
15
+ width: 24%;
16
+ }
17
+ .ig-gallery-wrap .theme-browser .theme .theme-screenshot img{
18
+ height: 13em;
19
+ }
20
+ </style>
21
+ <div class="wrap ig-gallery-wrap">
22
+ <h2><?php esc_html_e( 'Gallery items' ); ?><span class="title-count theme-count"></span></h2>
23
+ <div class="ig-gal-description"><?php _e('Here\'s a collection of some ','icegram') ?><strong><?php _e('beautiful, powerful ready-to-use Icegram Campaigns.','icegram') ?></strong></div>
24
+ <div><?php _e('No coding or special skills required. Simply click to' ,'icegram')?><strong><?php _e(' Use This ','icegram')?></strong><?php _e('and the campaign will automatically appear in your Icegram dashboard.','icegram')?></div>
25
+ <br/>
26
+ <div class="theme-browser">
27
+ <div class="themes"></div>
28
+ </div>
29
+ <div class="theme-install-overlay wp-full-overlay expanded"></div>
30
+ <!-- <div class="theme-overlay"></div> -->
31
+ </div><!-- .wrap -->
32
+ <script id="tmpl-theme" type="text/template">
33
+ <# if ( data.image ) { #>
34
+ <div class="theme-screenshot">
35
+ <img src="{{ data.image.guid }}" alt="" />
36
+ </div>
37
+ <# } else { #>
38
+ <div class="theme-screenshot blank"></div>
39
+ <# } #>
40
+ <span class="more-details" id="{{ data.id }}-action"><?php _e( 'Preview' ); ?></span>
41
+ <div class="theme-author"><?php printf( __( 'By %s' ), '{{{ data.id }}}' ); ?></div>
42
+ </script>
43
+ <!-- TODO:: Remove it if not required -->
44
+
45
+ <script id="tmpl-theme-preview" type="text/template">
46
+ <div class="wp-full-overlay-sidebar">
47
+ <div class="wp-full-overlay-header">
48
+ <a href="#" class="close-full-overlay"><span class="screen-reader-text"><?php _e( 'Close' ); ?></span></a>
49
+ <a href="#" class="previous-theme"><span class="screen-reader-text"><?php _ex( 'Previous', 'Button label for a theme' ); ?></span></a>
50
+ <a href="#" class="next-theme"><span class="screen-reader-text"><?php _ex( 'Next', 'Button label for a theme' ); ?></span></a>
51
+ <a href="?action=fetch_messages&campaign_id={{data.campaign_id}}&gallery_item={{data.slug}}" class="button button-primary theme-install"><?php _e( 'Use This' ); ?></a>
52
+ </div>
53
+ <div class="wp-full-overlay-sidebar-content">
54
+ <div class="install-theme-info">
55
+ <h3 class="theme-name">{{ data.title.rendered }}</h3>
56
+ <span class="theme-by"><?php printf( __( 'By %s' ), 'Icegram' ); ?></span>
57
+
58
+ <img class="theme-screenshot" src="{{ data.image.guid }}" alt="" />
59
+
60
+ <div class="theme-details">
61
+ <!--
62
+ <# if ( data.rating && data.rating > 0 ) { #>
63
+ <div class="theme-rating">
64
+ {{{ data.stars }}}
65
+ <span class="num-ratings">Rating : {{ data.rating }}</span>
66
+ </div>
67
+ <# } else { #>
68
+ <span class="no-rating"><?php _e( 'This theme has not been rated yet.' ); ?></span>
69
+ <# } #>
70
+ <div class="theme-version"><?php printf( __( 'Version: %s' ), '{{ data.version }}' ); ?></div> -->
71
+ <div class="theme-description">{{{ data.description }}}</div>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ <div class="wp-full-overlay-footer">
76
+ <button type="button" class="collapse-sidebar button-secondary" aria-expanded="true" aria-label="<?php esc_attr_e( 'Collapse Sidebar' ); ?>">
77
+ <span class="collapse-sidebar-arrow"></span>
78
+ <span class="collapse-sidebar-label"><?php _e( 'Collapse' ); ?></span>
79
+ </button>
80
+ </div>
81
+ </div>
82
+ <div class="wp-full-overlay-main">
83
+ <iframe src="{{ data.link }}" title="<?php esc_attr_e( 'Preview' ); ?>" />
84
+ </div>
85
+ </script>
trunk/icegram.php ADDED
@@ -0,0 +1,1721 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Plugin Name: Icegram - Popups, Optins, CTAs & lot more...
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.9.20.1
7
+ * Author: icegram
8
+ * Author URI: http://www.icegram.com/
9
+ *
10
+ * Copyright (c) 2014-16 Icegram
11
+ * License: GPLv3
12
+ * License URI: http://www.gnu.org/licenses/gpl-3.0.html
13
+ *
14
+ * Text Domain: icegram
15
+ * Domain Path: /lang/
16
+ */
17
+
18
+ /**
19
+ * Main class Icegram
20
+ */
21
+ class Icegram {
22
+
23
+ var $plugin_url;
24
+ var $plugin_path;
25
+ var $version;
26
+ var $_wpautop_tags;
27
+ var $message_types;
28
+ var $message_type_objs;
29
+ var $shortcode_instances;
30
+ var $available_headlines;
31
+ var $mode;
32
+ var $cache_compatibility;
33
+
34
+ public static $current_page_id;
35
+
36
+ function __construct() {
37
+
38
+ $this->version = "1.9.20.1";
39
+ $this->shortcode_instances = array();
40
+ $this->mode = 'local';
41
+ $this->plugin_url = untrailingslashit( plugins_url( '/', __FILE__ ) );
42
+ $this->plugin_path = untrailingslashit( plugin_dir_path( __FILE__ ) );
43
+ $this->include_classes();
44
+ $this->cache_compatibility = get_option('icegram_cache_compatibility', 'no');
45
+
46
+ if( is_admin() && current_user_can( 'edit_posts' ) ) {
47
+ $ig_campaign_admin = Icegram_Campaign_Admin::getInstance();
48
+ $ig_message_admin = Icegram_Message_Admin::getInstance();
49
+ add_action( 'admin_enqueue_scripts', array( &$this, 'enqueue_admin_styles_and_scripts' ) );
50
+ add_action( 'admin_print_styles', array( &$this, 'remove_preview_button' ) );
51
+ add_filter( 'post_row_actions', array( &$this , 'remove_row_actions' ), 10, 2 );
52
+
53
+ add_action( 'admin_menu', array( &$this, 'admin_menus') );
54
+ add_action( 'admin_init', array( &$this, 'welcome' ) );
55
+ add_action( 'admin_init', array( &$this, 'dismiss_admin_notice' ) );
56
+
57
+ add_action( 'admin_init', array( &$this, 'import_gallery_item' ) );
58
+
59
+ add_action( 'icegram_settings_after', array( &$this, 'klawoo_subscribe_form' ) );
60
+ add_action( 'icegram_about_changelog', array( &$this, 'klawoo_subscribe_form' ) );
61
+ add_action( 'icegram_settings_after', array( &$this, 'icegram_houskeeping' ) );
62
+ add_action( 'admin_notices', array( &$this,'add_admin_notices'));
63
+ add_filter( 'ig_in_app_offers', array( &$this , 'add_in_app_offer' ) );
64
+ add_filter('plugin_action_links', array($this, 'ig_plugin_settings_link'), 10, 2);
65
+ } else {
66
+ add_action( 'wp_footer', array( &$this, 'icegram_load_data' ));
67
+ }
68
+ if($this->cache_compatibility === 'no'){
69
+ add_action( 'wp_footer', array( &$this, 'display_messages' ) );
70
+ }
71
+ add_shortcode( 'icegram', array( &$this, 'execute_shortcode' ) );
72
+ add_shortcode( 'ig_form', array( &$this, 'execute_form_shortcode' ) );
73
+ // WPML compatibility
74
+ add_filter( 'icegram_identify_current_page', array( &$this, 'wpml_get_parent_id' ), 10 );
75
+
76
+ add_filter( 'icegram_branding_data', array( &$this , 'branding_data_remove' ), 10 );
77
+ add_action( 'wp_enqueue_scripts', array( &$this, 'identify_current_page' ) );
78
+ add_filter( 'icegram_get_valid_campaigns_sql', array( &$this , 'append_to_valid_campaigns_sql' ), 10, 2 );
79
+ add_action( 'icegram_print_js_css_data', array( &$this, 'print_js_css_data' ), 10, 1);
80
+ // common
81
+ add_action( 'init', array( &$this, 'register_campaign_post_type' ) );
82
+ add_action( 'init', array( &$this, 'register_message_post_type' ) );
83
+
84
+ add_action( 'icegram_loaded', array( &$this, 'load_compat_classes') );
85
+
86
+ // execute shortcode in sidebar
87
+ add_filter( 'widget_text', array(&$this, 'ig_widget_text_filter') );
88
+
89
+ add_filter( 'rainmaker_validate_request', array(&$this,'form_submission_validate_request'), 10, 2);
90
+
91
+ if ( defined( 'DOING_AJAX' ) ) {
92
+ if($this->cache_compatibility === 'yes'){
93
+ add_action( 'wp_ajax_display_messages', array( &$this, 'display_messages' ) );
94
+ add_action( 'wp_ajax_nopriv_display_messages', array( &$this, 'display_messages' ) );
95
+ }
96
+ add_action( 'wp_ajax_icegram_event_track', array( &$this, 'icegram_event_track' ) );
97
+ add_action( 'wp_ajax_nopriv_icegram_event_track', array( &$this, 'icegram_event_track' ) );
98
+ add_action( 'wp_ajax_klawoo_subscribe', array( &$this, 'klawoo_subscribe' ) );
99
+ add_action( 'wp_ajax_icegram_run_housekeeping', array( &$this, 'run_housekeeping' ) );
100
+
101
+ }
102
+
103
+ }
104
+ function ig_plugin_settings_link($links, $file){
105
+ if ($file == plugin_basename(__FILE__)){
106
+ $addons_link = '<a href="edit.php?post_type=ig_campaign&page=icegram-addons" >'.__('Addons', 'icegram').'</a>';
107
+ $settings_link = '<a href="edit.php?post_type=ig_campaign&page=icegram-settings">'.__('Settings', 'icegram').'</a>';
108
+ $support_link = '<a href="edit.php?post_type=ig_campaign&page=icegram-support">'.__('Support', 'icegram').'</a>';
109
+ array_unshift($links, $support_link);
110
+ array_unshift($links, $settings_link);
111
+ array_unshift($links, $addons_link);
112
+ }
113
+ return $links;
114
+
115
+ }
116
+
117
+ public function load_compat_classes() {
118
+
119
+ $compat_classes = (array) glob( $this->plugin_path . '/classes/compat/class-icegram-compat-*.php' );
120
+ if (empty($compat_classes)) {
121
+ return;
122
+ }
123
+
124
+ $active_plugins = (array) get_option('active_plugins', array());
125
+ if (is_multisite()) {
126
+ $active_plugins = array_merge($active_plugins, get_site_option('active_sitewide_plugins', array()));
127
+ }
128
+ $active_plugins = array_unique( array_merge( array_values($active_plugins), array_keys($active_plugins)) );
129
+ $active_plugins_with_slugs = array();
130
+ foreach ($active_plugins as $key => $value) {
131
+ $slug = dirname( $value );
132
+ if ($slug == '.') {
133
+ unset($active_plugins[$key]);
134
+ } else {
135
+ $active_plugins[ $key ] = $slug;
136
+ }
137
+ }
138
+
139
+ foreach ($compat_classes as $file) {
140
+ if (is_file ( $file )) {
141
+ $slug = str_replace('class-icegram-compat-', '', str_replace(".php", "", basename( $file )) );
142
+ if ( in_array($slug, $active_plugins)) {
143
+ include_once( $file );
144
+ $class_name = 'Icegram_Compat_'. str_replace('-', '_', $slug);
145
+ if ( class_exists( $class_name ) ) {
146
+ new $class_name();
147
+ }
148
+ }
149
+ }
150
+ }
151
+ }
152
+ public function add_admin_notices(){
153
+ $screen = get_current_screen();
154
+ if ( !in_array( $screen->id, array( 'ig_campaign', 'ig_message','edit-ig_message','edit-ig_campaign' ), true ) ) return;
155
+ $active_plugins = get_option( 'active_plugins', array() );
156
+ ?>
157
+ <style type="text/css">
158
+ div.icegram_notice {
159
+ border-left: 4px solid #7bcf3a;
160
+ padding: 1px 12px;
161
+ background-color: #FFF;
162
+ -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
163
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
164
+ margin: 15px 20px 10px 6px;
165
+ }
166
+ a.ig-admin-btn{
167
+ margin-left: 10px;
168
+ padding: 4px 8px;
169
+ position: relative;
170
+ text-decoration: none;
171
+ border: none;
172
+ -webkit-border-radius: 2px;
173
+ border-radius: 2px;
174
+ background: #e0e0e0;
175
+ text-shadow: none;
176
+ font-weight: 600;
177
+ font-size: 13px;
178
+ }
179
+ a.ig-admin-btn-secondary{
180
+ background: #fafafa;
181
+ margin-left: 20px;
182
+ font-weight: 400;
183
+ }
184
+
185
+ a.ig-admin-btn:hover{
186
+ color: #FFF;
187
+ background-color: #363b3f;
188
+ }
189
+ </style>
190
+ <?php
191
+ // Admin notices for free bonuses!
192
+ $admin_notice_text = '';
193
+ if(!get_option('dismiss_admin_notice_from_icegram') && !in_array('ig-analytics/ig-analytics.php', $active_plugins)){
194
+ //analytics
195
+ $admin_notice_text = "<span style='padding:0.5em;'>Measure performance of your Icegram messages with the <b>free Analytics addon</b>.<a class='ig-admin-btn' style='display:inline-block' href='http://www.icegram.com/addons/analytics/?utm_source=inapp&utm_campaign=freebonus&utm_medium=notices' target='_blank'>Cool, Let's begin</a></span>";
196
+ $no_offer_text = __('No, I don\'t like offers...','icegram');
197
+ $option_name = 'dismiss_admin_notice_from';
198
+ }
199
+ $offer_content = array();
200
+ $offer_content = apply_filters('ig_in_app_offers', $offer_content);
201
+
202
+ if(!empty($offer_content['option_name']) && !get_option($offer_content['option_name']) && in_array('ig-analytics/ig-analytics.php', $active_plugins)){
203
+ $admin_notice_text = !empty($offer_content['admin_notice_text']) ? $offer_content['admin_notice_text'] : '';
204
+ $no_offer_text_set = array('save_money' => __('No, I don\'t want to save money ','icegram'),
205
+ 'full_price' => __('No, I will buy at full price later','icegram'),
206
+ 'insider_deals' => __('No, I don\'t like insider deals','icegram'),
207
+ );
208
+ $key = array_rand($no_offer_text_set);
209
+ $no_offer_text = $no_offer_text_set[$key];
210
+ $option_name = $offer_content['option_name'];
211
+ }
212
+ if($admin_notice_text != ''){
213
+ echo '<div class="icegram_notice" style="padding-top:1em;clear:both"><span class="dashicons dashicons-awards" style="font-size:3em;color:#b32727;margin:0 .4em .45em -0.2em;"></span>'.$admin_notice_text.
214
+ '<a style="display:inline-block" class="ig-admin-btn ig-admin-btn-secondary" href="?dismiss_admin_notice=1&option_name='.$option_name.'">'.$no_offer_text.'</a>
215
+ </div>';
216
+ }
217
+
218
+ //Admin notice for Rainmaker
219
+ $admin_notice_for_rm = '';
220
+ if(('install_plugins') && !in_array('icegram-rainmaker/icegram-rainmaker.php', $active_plugins) && !get_option('ig_rm_notice_icegram')){
221
+ $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . 'icegram-rainmaker'), 'install-plugin_' . 'icegram-rainmaker');
222
+ $admin_notice_text_for_rm = "Icegram recommends <b>Rainmaker</b>";
223
+ echo '<div class="notice notice-warning"> <p> '.$admin_notice_text_for_rm.'<a style="display:inline-block" class="ig-admin-btn" href="'.$url.'">'.__('Begin installation','icegram').'</a><a style="display:inline-block" class="ig-admin-btn ig-admin-btn-secondary" href="?dismiss_admin_notice=1&option_name=ig_rm_notice">'.__('No, I don\'t need it', 'icegram').'</a></p></div>';
224
+ }
225
+
226
+
227
+ }
228
+ public function dismiss_admin_notice(){
229
+ if(isset($_GET['dismiss_admin_notice']) && $_GET['dismiss_admin_notice'] == '1' && isset($_GET['option_name'])){
230
+ $option_name = sanitize_text_field($_GET['option_name']);
231
+ update_option($option_name.'_icegram', true);
232
+ wp_safe_redirect($_SERVER['HTTP_REFERER']);
233
+ exit();
234
+ }
235
+ }
236
+
237
+ //add in app promotion offers here
238
+ public function add_in_app_offer($offer_content){
239
+ return $offer_content;
240
+ }
241
+
242
+ public function klawoo_subscribe_form() {
243
+ ?>
244
+ <div class="wrap">
245
+ <?php
246
+ if ( stripos(get_current_screen()->base, 'settings') !== false ) {
247
+ echo "<h2>".__( 'Free Add-ons, Proven Marketing Tricks and Updates', 'icegram' )."</h2>";
248
+ }
249
+ ?>
250
+ <table class="form-table">
251
+ <tr>
252
+ <th scope="row"><?php _e( 'Get add-ons and tips...', 'icegram' ) ?></th>
253
+ <td>
254
+ <form name="klawoo_subscribe" action="#" method="POST" accept-charset="utf-8">
255
+ <input class="ltr" type="text" name="name" id="name" placeholder="Name"/>
256
+ <input class="regular-text ltr" type="text" name="email" id="email" placeholder="Email"/>
257
+ <input type="hidden" name="list" value="7I763v6Ldrs3YhJeee5EOgFA"/>
258
+ <input type="submit" name="submit" id="submit" class="button button-primary" value="Subscribe">
259
+ <br/>
260
+ <div id="klawoo_response"></div>
261
+ </form>
262
+ </td>
263
+ </tr>
264
+ </table>
265
+ </div>
266
+ <script type="text/javascript">
267
+ jQuery(function () {
268
+ jQuery("form[name=klawoo_subscribe]").submit(function (e) {
269
+ e.preventDefault();
270
+
271
+ jQuery('#klawoo_response').html('');
272
+ params = jQuery("form[name=klawoo_subscribe]").serializeArray();
273
+ params.push( {name: 'action', value: 'klawoo_subscribe' });
274
+
275
+ jQuery.ajax({
276
+ method: 'POST',
277
+ type: 'text',
278
+ url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
279
+ data: params,
280
+ success: function(response) {
281
+ if (response != '') {
282
+ jQuery('#klawoo_response').html(response);
283
+ } else {
284
+ jQuery('#klawoo_response').html('error!');
285
+ }
286
+ }
287
+ });
288
+ });
289
+ });
290
+ </script>
291
+ <?php
292
+ }
293
+
294
+
295
+ public function klawoo_subscribe() {
296
+ $url = 'http://app.klawoo.com/subscribe';
297
+
298
+ if( !empty( $_POST ) ) {
299
+ $params = $_POST;
300
+ } else {
301
+ exit();
302
+ }
303
+ $method = 'POST';
304
+ $qs = http_build_query( $params );
305
+
306
+ $options = array(
307
+ 'timeout' => 15,
308
+ 'method' => $method
309
+ );
310
+
311
+ if ( $method == 'POST' ) {
312
+ $options['body'] = $qs;
313
+ } else {
314
+ if ( strpos( $url, '?' ) !== false ) {
315
+ $url .= '&'.$qs;
316
+ } else {
317
+ $url .= '?'.$qs;
318
+ }
319
+ }
320
+
321
+ $response = wp_remote_request( $url, $options );
322
+ if ( wp_remote_retrieve_response_code( $response ) == 200 ) {
323
+ $data = $response['body'];
324
+ if ( $data != 'error' ) {
325
+
326
+ $message_start = substr( $data, strpos( $data,'<body>' ) + 6 );
327
+ $remove = substr( $message_start, strpos( $message_start,'</body>' ) );
328
+ $message = trim( str_replace( $remove, '', $message_start ) );
329
+ echo ( $message );
330
+ exit();
331
+ }
332
+ }
333
+ exit();
334
+ }
335
+
336
+ public function icegram_houskeeping(){
337
+ ?>
338
+ <div class="wrap">
339
+ <?php
340
+ if ( stripos(get_current_screen()->base, 'settings') !== false ) {
341
+ ?>
342
+ <form name="icegram_housekeeping" action="#" method="POST" accept-charset="utf-8">
343
+ <h2><?php _e( 'Housekeeping', 'icegram' ) ?></h2>
344
+ <p class="ig_housekeeping">
345
+ <label for="icegram_remove_shortcodes">
346
+ <input type="checkbox" name="icegram_remove_shortcodes" value="yes" />
347
+ <?php _e( 'Remove all Icegram shortcodes', 'icegram' ); ?>
348
+ </label>
349
+ <br/><br/>
350
+ <label for="icegram_remove_all_data">
351
+ <input type="checkbox" name="icegram_remove_all_data" value="yes" />
352
+ <?php _e( 'Remove all Icegram campaigns and messages', 'icegram' ); ?>
353
+ </label>
354
+ <br/><br/>
355
+ <img alt="" src="<?php echo admin_url( 'images/wpspin_light.gif' ) ?>" class="ig_loader" style="vertical-align:middle;display:none" />
356
+ <input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e( 'Clean Up', 'icegram' ); ?>">
357
+ <div id="icegram_housekeeping_response"></div>
358
+ </p>
359
+ </form>
360
+
361
+ </div>
362
+ <script type="text/javascript">
363
+ jQuery(function () {
364
+ jQuery("form[name=icegram_housekeeping]").submit(function (e) {
365
+ 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){
366
+ e.preventDefault();
367
+ jQuery('.ig_loader').show();
368
+ jQuery('#icegram_housekeeping_response').text("");
369
+ params = jQuery("form[name=icegram_housekeeping]").serializeArray();
370
+ params.push( {name: 'action', value: 'icegram_run_housekeeping' });
371
+ params.push( {name: 'security', value: <?php echo wp_create_nonce('ig_run_housekeeping'); ?> });
372
+
373
+ jQuery.ajax({
374
+ method: 'POST',
375
+ type: 'text',
376
+ url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
377
+ data: params,
378
+ success: function(response) {
379
+ jQuery('.ig_loader').hide();
380
+ jQuery('#icegram_housekeeping_response').text("<?php _e('Done!', 'icegram'); ?>");
381
+ }
382
+ });
383
+ }
384
+ });
385
+ });
386
+ </script>
387
+ <?php
388
+ }
389
+ }
390
+ public function run_housekeeping() {
391
+ check_ajax_referer('ig_run_housekeeping', 'security');
392
+ global $wpdb, $current_user;
393
+ $params = $_POST;
394
+ $_POST = array();
395
+ if(current_user_can( 'manage_options' ) && !empty($params['icegram_remove_shortcodes']) && $params['icegram_remove_shortcodes'] == 'yes') {
396
+ // first get all posts with [icegram] shortcode in them
397
+ $sql = "SELECT * FROM `$wpdb->posts` WHERE `post_content` LIKE '%[icegram %]%' and `post_type` != 'revision' ";
398
+ $posts = $wpdb->get_results($sql, OBJECT);
399
+ if ( !empty($posts) && is_array($posts) ) {
400
+ foreach ($posts as $post) {
401
+ $post_content = $post->post_content;
402
+ // remove shortcode with regexp now
403
+ $re = "/\\[icegram(.)*\\]/i";
404
+ $post_content = preg_replace($re, '', $post_content);
405
+ // save post content back
406
+ if ($post_content && $post_content != $post->post_content) {
407
+ wp_update_post( array ( 'ID' => $post->ID,
408
+ 'post_content' => $post_content
409
+ ) );
410
+ }
411
+ }
412
+ }
413
+ }
414
+
415
+ if(!empty($params['icegram_remove_all_data']) && $params['icegram_remove_all_data'] == 'yes') {
416
+ $posts = get_posts( array( 'post_type' => array( 'ig_campaign', 'ig_message' ) ) );
417
+ if ( !empty($posts) && is_array($posts) ) {
418
+ foreach ($posts as $post) {
419
+ wp_delete_post( $post->ID, true);
420
+ }
421
+ }
422
+ do_action('icegram_remove_all_data');
423
+ }
424
+ $_POST = $params;
425
+ }
426
+
427
+ public function icegram_event_track() {
428
+ if( !empty($_POST['ig_local_url_cs']) && isset($_SERVER['HTTP_ORIGIN']) ){
429
+ $parts = parse_url($_POST['ig_local_url_cs']);
430
+ $base_url = $parts["scheme"] . "://" . $parts["host"];
431
+ header('Access-Control-Allow-Origin: '.$base_url);
432
+ header('Access-Control-Allow-Credentials: true');
433
+ }
434
+
435
+ if( !empty( $_POST['event_data'] ) ) {
436
+ foreach ( $_POST['event_data'] as $event ) {
437
+ switch ($event['type']) {
438
+ case 'shown':
439
+ if (is_array($event['params']) && !empty($event['params']['message_id'])) {
440
+ $messages_shown[] = $event['params']['message_id'];
441
+ if(!empty($event['params']['expiry_time'])){
442
+ if($event['params']['expiry_time'] =='today'){
443
+ $event['params']['expiry_time'] = strtotime('+1 day', mktime(0, 0, 0));
444
+ }else if($event['params']['expiry_time'] == 'current_session'){
445
+ $event['params']['expiry_time'] = 0;
446
+ }else{
447
+ $event['params']['expiry_time'] = strtotime($event['params']['expiry_time']);
448
+ }
449
+
450
+ $event['default'] = true;
451
+ $event = apply_filters('icegram_check_event_track', $event);
452
+ if($event['default']){
453
+ setcookie('icegram_campaign_shown_'.floor($event['params']['campaign_id']),true , $event['params']['expiry_time'] , '/');
454
+ }
455
+ }
456
+ }
457
+ break;
458
+ case 'clicked':
459
+ if (is_array($event['params']) && !empty($event['params']['message_id'])) {
460
+ $messages_clicked[] = $event['params']['message_id'];
461
+ if(!empty($event['params']['expiry_time_clicked'])){
462
+ if($event['params']['expiry_time_clicked'] =='today'){
463
+ $event['params']['expiry_time_clicked'] = strtotime('+1 day', mktime(0, 0, 0));
464
+ }else if($event['params']['expiry_time_clicked'] == 'current_session'){
465
+ $event['params']['expiry_time_clicked'] = 0;
466
+ }else{
467
+ $event['params']['expiry_time_clicked'] = strtotime($event['params']['expiry_time_clicked']);
468
+ }
469
+ //setcookie('icegram_messages_clicked_'.$event['params']['message_id'],true , $event['params']['expiry_time_clicked'] , '/' );
470
+ setcookie('icegram_campaign_clicked_'.floor($event['params']['campaign_id']),true , $event['params']['expiry_time_clicked'] , '/' );
471
+ }
472
+ }
473
+ break;
474
+
475
+ default:
476
+ break;
477
+ }
478
+
479
+ // Emit event for other plugins to handle it
480
+ do_action('icegram_event_track', $event);
481
+ do_action('icegram_event_track_'.$event['type'], $event['params']);
482
+ }
483
+ }
484
+ exit();
485
+ }
486
+
487
+ static function install() {
488
+ // Redirect to welcome screen
489
+ delete_option( '_icegram_activation_redirect' );
490
+ add_option( '_icegram_activation_redirect', 'pending' );
491
+ }
492
+
493
+ public function welcome() {
494
+
495
+ $this->db_update();
496
+ // Bail if no activation redirect transient is set
497
+ if ( false === get_option( '_icegram_activation_redirect' ) )
498
+ return;
499
+
500
+ // Delete the redirect transient
501
+ delete_option( '_icegram_activation_redirect' );
502
+
503
+ wp_redirect( admin_url( 'edit.php?post_type=ig_campaign&page=icegram-support' ) );
504
+ exit;
505
+ }
506
+
507
+ function db_update() {
508
+ $current_db_version = get_option( 'icegram_db_version' );
509
+ if ( !$current_db_version || version_compare( $current_db_version, '1.2', '<' ) ) {
510
+ include( 'updates/icegram-update-1.2.php' );
511
+ }
512
+ }
513
+
514
+ public function admin_menus() {
515
+
516
+ $welcome_page_title = __( 'Welcome to Icegram', 'icegram' );
517
+ $gallery_page_title = '<span style="color:#f18500;font-weight:bolder;">' . __( 'Gallery', 'icegram' ).'<span>';
518
+ $settings_page_title = __( 'Settings', 'icegram' );
519
+ $addons_page_title = '<span style="color:#f18500;font-weight:bolder;">' .__( 'Add-ons', 'icegram' ) .'<span>';
520
+
521
+ /*
522
+ if ( false === ( $ig_addons = get_transient( 'icegram_addons_data' ) ) ) {
523
+ $this->check_for_addons();
524
+ }
525
+ $addon_count = get_option( 'icegram_no_of_addons' );
526
+
527
+ if ($addon_count > 0) {
528
+ $addons_page_title .= " <span class='awaiting-mod update-plugins count-$addon_count'><span class='addon-count'>" . number_format_i18n( $addon_count ) . "</span></span>" ;
529
+ }
530
+ */
531
+
532
+ $menu_title = __( 'Docs & Support', 'icegram' );
533
+ $gallery = add_submenu_page( 'edit.php?post_type=ig_campaign', $gallery_page_title, $gallery_page_title, 'manage_options', 'icegram-gallery', array( $this, 'gallery_screen' ) );
534
+ $about = add_submenu_page( 'edit.php?post_type=ig_campaign', $welcome_page_title, $menu_title, 'manage_options', 'icegram-support', array( $this, 'about_screen' ) );
535
+ $settings = add_submenu_page( 'edit.php?post_type=ig_campaign', $settings_page_title, $settings_page_title, 'manage_options', 'icegram-settings', array( $this, 'settings_screen' ) );
536
+ $addons = add_submenu_page( 'edit.php?post_type=ig_campaign', $addons_page_title, $addons_page_title, 'manage_options', 'icegram-addons', array( $this, 'addons_screen' ) );
537
+
538
+ add_action( 'admin_print_styles-'. $about, array( $this, 'admin_css' ) );
539
+ add_action( 'admin_print_styles-'. $settings, array( $this, 'admin_css' ) );
540
+ add_action( 'admin_print_styles-'. $addons, array( $this, 'admin_css' ) );
541
+
542
+ }
543
+
544
+ public function admin_css() {
545
+ wp_enqueue_style( 'icegram-activation', $this->plugin_url . '/assets/css/admin.min.css' );
546
+ }
547
+
548
+ public function about_screen() {
549
+
550
+ // Import data if not done already
551
+ if( false === get_option( 'icegram_sample_data_imported' ) ) {
552
+ $this->import_sample_data( $this->get_sample_data() );
553
+ }
554
+
555
+ include ( 'about-icegram.php' );
556
+ }
557
+
558
+ public function settings_screen() {
559
+ include ( 'settings.php' );
560
+ }
561
+
562
+ public function addons_screen() {
563
+ $ig_addons = $this->check_for_addons( true );
564
+ include ( 'addons.php' );
565
+ }
566
+ public function gallery_screen() {
567
+ include ( 'gallery.php' );
568
+ wp_register_script('ig_gallery_js', $this->plugin_url . '/assets/js/gallery.min.js', array ( 'jquery','backbone','wp-backbone','wp-a11y','wp-util' ), $this->version, true);
569
+ if( !wp_script_is( 'ig_gallery_js' ) ) {
570
+ wp_enqueue_script( 'ig_gallery_js' );
571
+ $imported_gallery_items = get_option('ig_imported_gallery_items',true);
572
+ wp_localize_script( 'ig_gallery_js', '_wpThemeSettings', array(
573
+ 'themes' => array(),
574
+ 'settings' => array(
575
+ 'canInstall' => ( ! is_multisite() && ( 'install_themes' ) ),
576
+ 'installURI' => ( ! is_multisite() && ( 'install_themes' ) ) ? admin_url( 'theme-install.php' ) : null,
577
+ 'confirmDelete' => __( "Are you sure you want to delete this theme?\n\nClick 'Cancel' to go back, 'OK' to confirm the delete." ),
578
+ 'adminUrl' => parse_url( admin_url(), PHP_URL_PATH ),
579
+ ),
580
+ 'l10n' => array(
581
+ 'addNew' => __( 'Add New Gallery Item' ),
582
+ 'search' => __( 'Search Installed Gallery Item' ),
583
+ 'searchPlaceholder' => __( 'Search installed Gallery Item...' ), // placeholder (no ellipsis)
584
+ 'themesFound' => __( 'Number of Gallery Item found: %d' ),
585
+ 'noThemesFound' => __( 'No Gallery Item found. Try a different search.' ),
586
+ ),
587
+ 'installedThemes' => $imported_gallery_items
588
+ ) );
589
+ //wp_localize_script( 'ig_gallery_js', 'icegram_pre_data' , $icegram_pre_data);
590
+ }
591
+ }
592
+
593
+ public function check_for_addons( $force_update = false ) {
594
+
595
+ if ( $force_update === true || false === ( $ig_addons = get_transient( 'icegram_addons_data' ) ) ) {
596
+ $ig_addons_json = wp_remote_get( 'http://icegram.com/addons.json', array( 'user-agent' => 'Icegram Addons' ) );
597
+
598
+ if ( ! is_wp_error( $ig_addons_json ) ) {
599
+ $ig_addons = json_decode( wp_remote_retrieve_body( $ig_addons_json ));
600
+ $addon_count = get_option( 'icegram_no_of_addons', 0 );
601
+ if ( !empty($ig_addons) && is_array($ig_addons) ) {
602
+ set_transient( 'icegram_addons_data', $ig_addons, 24 * HOUR_IN_SECONDS ); // 1 day
603
+ update_option( 'icegram_no_of_addons', count( $ig_addons ) - $addon_count ); // display count of newly added addons
604
+ }
605
+ }
606
+ }
607
+ return $ig_addons;
608
+ }
609
+
610
+ public function branding_data_remove( $icegram_branding_data ) {
611
+ if( !empty( $icegram_branding_data ) && 'yes' != get_option('icegram_share_love', 'no') ) {
612
+ $icegram_branding_data['powered_by_logo'] = '';
613
+ $icegram_branding_data['powered_by_text'] = '';
614
+ }
615
+ return $icegram_branding_data;
616
+ }
617
+
618
+ //Execute Form shortcode
619
+ function execute_form_shortcode( $atts = array() ) {
620
+ return '<div class="ig_form_container layout_inline"></div>';
621
+ }
622
+
623
+ function execute_shortcode( $atts = array() , $content = null ) {
624
+ // When shortcode is called, it will only prepare an array with conditions
625
+ // And add a placeholder div
626
+ // Display will happen in footer via display_messages()
627
+ $i = count($this->shortcode_instances);
628
+ $this->shortcode_instances[ $i ] = shortcode_atts( array(
629
+ 'campaigns' => '',
630
+ 'messages' => '',
631
+ 'skip_others' => 'no'
632
+ ), $atts );
633
+
634
+ $class[] = "ig_shortcode_container";
635
+ $html[] = "<div id='icegram_shortcode_{$i}'";
636
+ if(!empty($atts['campaigns']) && !empty($content)){
637
+ $this->shortcode_instances[ $i ]['with_content'] = true;
638
+ $class[] = "trigger_onclick";
639
+ }
640
+ foreach ($atts as $key => $value) {
641
+ $value = str_replace(",", " ", $value);
642
+ $html[] = " data-{$key}=\"".htmlentities($value)."\" ";
643
+ }
644
+ $class = implode(" ", $class);
645
+ $html[] = "class='".$class."' >".$content."</div>";
646
+ return implode(" ", $html);
647
+ }
648
+
649
+ // Do not index Icegram campaigns / messages...
650
+ // Not using currently - made custom post types non public...
651
+ function icegram_load_data() {
652
+ global $post;
653
+ $icegram_pre_data['ajax_url'] = admin_url( 'admin-ajax.php' );
654
+ $icegram_pre_data['post_obj'] = $_GET;
655
+ $icegram_pre_data['post_obj']['is_home'] = (is_home() || is_front_page()) ? true : false;
656
+ $icegram_pre_data['post_obj']['page_id'] = is_object($post) && isset($post->ID) ? $post->ID : 0;
657
+ $icegram_pre_data['post_obj']['action'] = 'display_messages';
658
+ $icegram_pre_data['post_obj']['shortcodes'] = $this->shortcode_instances;
659
+ $icegram_pre_data['post_obj']['cache_compatibility'] = $this->cache_compatibility;
660
+ $icegram_pre_data['post_obj']['device'] = $this->get_platform();
661
+ wp_register_script('icegram_main_js', $this->plugin_url . '/assets/js/main.min.js', array ( 'jquery' ), $this->version, true);
662
+ if( !wp_script_is( 'icegram_main_js' ) ) {
663
+ wp_enqueue_script( 'icegram_main_js' );
664
+ wp_localize_script( 'icegram_main_js', 'icegram_pre_data', $icegram_pre_data);
665
+ }
666
+ }
667
+
668
+ function display_messages() {
669
+
670
+ $skip_others = $preview_mode = false;
671
+ $campaign_ids = $message_ids = array();
672
+ $this->shortcode_instances = ($this->cache_compatibility == 'yes' && !empty($_REQUEST['shortcodes'])) ? $_REQUEST['shortcodes'] : $this->shortcode_instances;
673
+ // Pull in message and campaign IDs from shortcodes - if set
674
+ if( !empty( $this->shortcode_instances ) ) {
675
+ foreach ($this->shortcode_instances as $i => $value) {
676
+ $cids = array_map( 'trim', (array) explode( ',', $value['campaigns'] ) );
677
+ $mids = array_map( 'trim', (array) explode( ',', $value['messages'] ) );
678
+ if (!empty($value['skip_others']) && $value['skip_others'] == 'yes' && (!empty($cids) || !empty($mids))) {
679
+ $skip_others = true;
680
+ }
681
+ $campaign_ids = array_merge($campaign_ids, $cids);
682
+ $message_ids = array_merge($message_ids, $mids);
683
+ }
684
+ }
685
+ if( !empty( $_REQUEST['campaign_preview_id'] ) && ( 'edit_posts' ) ) {
686
+ $campaign_ids = array( $_REQUEST['campaign_preview_id'] );
687
+ $preview_mode = true;
688
+ }
689
+
690
+
691
+ $messages = $this->get_valid_messages( $message_ids, $campaign_ids, $preview_mode, $skip_others );
692
+
693
+ if( empty( $messages ) ) {
694
+ //wp_die(0);
695
+ return;
696
+ }
697
+
698
+ $messages_to_show_ids = array();
699
+ foreach ( $messages as $key => $message_data ) {
700
+
701
+ if( !is_array( $message_data ) || empty( $message_data ) ) {
702
+ continue;
703
+ }
704
+
705
+ // Don't show a seen message again - if needed
706
+ // change to campaign targetting in v1.9.1
707
+ if( !empty( $message_data['id'] ) &&
708
+ empty( $_GET['campaign_preview_id'] ) &&
709
+ !empty( $message_data['retargeting'] ) &&
710
+ $message_data['retargeting'] == 'yes'
711
+ ) {
712
+ if(!empty($_COOKIE['icegram_messages_shown_'.$message_data['id']]) || !empty($_COOKIE['icegram_campaign_shown_'.floor($message_data['campaign_id'])])){
713
+ unset( $messages[$key] );
714
+ continue;
715
+ }
716
+ }
717
+ if( !empty( $message_data['id'] ) &&
718
+ empty( $_GET['campaign_preview_id'] ) &&
719
+ !empty( $message_data['retargeting_clicked'] ) &&
720
+ $message_data['retargeting_clicked'] == 'yes'
721
+ ) {
722
+ if(!empty($_COOKIE['icegram_messages_clicked_'.$message_data['id']]) || !empty($_COOKIE['icegram_campaign_clicked_'.floor($message_data['campaign_id'])])){
723
+ unset( $messages[$key] );
724
+ continue;
725
+ }
726
+ }
727
+
728
+ // Avoid showing the same message twice
729
+ if (in_array($message_data['id'], $messages_to_show_ids)) {
730
+ unset ( $messages[$key] );
731
+ continue;
732
+ } else {
733
+ $messages_to_show_ids[] = $message_data['id'];
734
+ }
735
+
736
+
737
+ /*
738
+ // Our own implementation so WP does not mess with script, style and pre tags
739
+ add_filter('the_content', array( $this, 'before_wpautop' ) , 9);
740
+ add_filter('the_content', array( $this, 'after_wpautop' ) , 11);
741
+ $messages[$key]['message'] = apply_filters( 'the_content', $message_data['message'] );
742
+ remove_filter('the_content', array( $this, 'before_wpautop' ) , 9);
743
+ remove_filter('the_content', array( $this, 'after_wpautop' ) , 11);
744
+ */
745
+ // Redo the_content functionality to avoid other plugins adding extraneous code to messages
746
+ $this->process_message_body($messages[$key]);
747
+ }
748
+
749
+ if( empty( $messages ) )
750
+ return;
751
+ $icegram_default = apply_filters( 'icegram_branding_data',
752
+ array ( 'icon' => $this->plugin_url . '/assets/images/icegram-logo-branding-64-grey.png',
753
+ 'powered_by_logo' => $this->plugin_url . '/assets/images/icegram-logo-branding-64-grey.png',
754
+ 'powered_by_text' => __( 'Powered by Icegram', 'icegram' )
755
+ ) );
756
+ $messages = apply_filters( 'icegram_messages_to_show', $messages );
757
+ $icegram_data = apply_filters( 'icegram_data', array ( 'messages' => array_values( $messages ),
758
+ 'ajax_url' => admin_url( 'admin-ajax.php' ),
759
+ 'preview_id' => !empty( $_GET['campaign_preview_id'] ) ? $_GET['campaign_preview_id'] : '',
760
+ 'defaults' => $icegram_default
761
+ ));
762
+ if (empty($icegram_data['preview_id'])) {
763
+ unset($icegram_data['preview_id']);
764
+ }
765
+ do_action('icegram_print_js_css_data', $icegram_data);
766
+
767
+ do_action('icegram_data_printed');
768
+ }
769
+
770
+ function print_js_css_data( $icegram_data ) {
771
+
772
+ $this->collect_js_and_css($icegram_data);
773
+ if($this->cache_compatibility === 'yes'){
774
+ echo json_encode($icegram_data);
775
+ wp_die();
776
+ }else{
777
+ wp_localize_script('icegram_main_js', 'icegram_data', $icegram_data);
778
+ }
779
+ }
780
+
781
+ function collect_js_and_css(&$icegram_data){
782
+ $types_shown = array();
783
+ $scripts = array();
784
+ $css = array();
785
+ foreach ($icegram_data['messages'] as $key => $message_data) {
786
+ $types_shown[] = $message_data['type'];
787
+ }
788
+ $types_shown = array_unique($types_shown);
789
+ $ver_psfix = '?var=' .$this->version;
790
+
791
+ $scripts[] = $this->plugin_url ."/assets/js/icegram.min.js". $ver_psfix;
792
+ $css[] = $this->plugin_url ."/assets/css/frontend.min.css". $ver_psfix;
793
+ //minify and combine only for default msg type
794
+ $ig_core_message_types = array('popup', 'action-bar', 'toast', 'messenger');
795
+ // Load JS and default CSS
796
+ foreach ($types_shown as $message_type) {
797
+ if(!in_array($message_type, $ig_core_message_types)){
798
+ $scripts[] = $this->message_types[$message_type]['baseurl'] ."main.js";
799
+ $css[] = $this->message_types[$message_type]['baseurl'] . "default.css";
800
+ }else{
801
+ $css[] = $this->message_types[$message_type]['baseurl'].'themes/'. $message_type. ".min.css". $ver_psfix;
802
+ }
803
+ }
804
+ //TODO :: add theme pack theme css files too.
805
+ // Load theme CSS
806
+ foreach ($icegram_data['messages'] as $key => $message) {
807
+ if ( !empty( $this->message_types[ $message['type'] ]['themes'][ $message['theme'] ]) ) {
808
+ $theme = $this->message_types[ $message['type'] ]['themes'][ $message['theme'] ]['baseurl'] . $message['theme'].'.css';
809
+ }else{
810
+ $theme_default = $this->message_types[ $message['type']] ['settings']['theme']['default'];
811
+ $theme = $this->message_types[ $message['type'] ]['themes'][ $theme_default]['baseurl'] . $theme_default.'.css';
812
+ $icegram_data['messages'][$key]['theme'] = $theme_default;
813
+ }
814
+ if(!preg_match('/icegram\/message-types/i', $theme)){
815
+ $css [] = $theme;
816
+ }
817
+ }
818
+ $css = array_unique($css);
819
+ $icegram_data['scripts'] = apply_filters('add_icegram_script' , $scripts);
820
+ $icegram_data['css'] = apply_filters('add_icegram_css' , $css);
821
+ return $icegram_data;
822
+ }
823
+
824
+ // Process
825
+ function process_message_body(&$message_data){
826
+ global $wp_scripts;
827
+ global $wp_styles;
828
+
829
+ if($this->cache_compatibility == 'yes'){
830
+ $q_script = !empty($wp_scripts->queue) ? $wp_scripts->queue : array();
831
+ $q_style = !empty($wp_styles->queue) ? $wp_styles->queue : array();
832
+ }
833
+ $content = $message_data['message'];
834
+ $content = convert_chars(convert_smilies( wptexturize( $content )));
835
+ if(isset($GLOBALS['wp_embed'])) {
836
+ $content = $GLOBALS['wp_embed']->autoembed($content);
837
+ }
838
+ $content = $this->after_wpautop( wpautop( $this->before_wpautop( $content ) ) );
839
+ $content = do_shortcode( shortcode_unautop( $content ) );
840
+ $message_data['message'] = $content;
841
+
842
+ //do_shortcode in headline
843
+ $message_data['headline'] = do_shortcode( shortcode_unautop( $message_data['headline'] ) );
844
+ //shortcode support for Third party forms and Rainmaker
845
+ $form_html_original = !empty($message_data["rainmaker_form_code"])
846
+ ? ('[rainmaker_form id="'. $message_data["rainmaker_form_code"] .'"]')
847
+ :(!empty($message_data['form_html_original']) ? $message_data['form_html_original'] : '');
848
+ if(!empty($form_html_original)){
849
+ $message_data['form_html'] = do_shortcode( shortcode_unautop( $form_html_original) );
850
+ }
851
+ //TODO :: Handle case for inline style and script
852
+ if($this->cache_compatibility == 'yes'){
853
+ $handles = !empty($wp_scripts->queue) ? array_diff($wp_scripts->queue, $q_script) : array();
854
+ unset($q_script);
855
+ if(!empty($handles)){
856
+ if(empty($message_data['assets']))
857
+ $message_data['assets'] = array();
858
+
859
+ ob_start();
860
+ $wp_scripts->do_items($handles);
861
+ $message_data['assets']['scripts'] = array_filter(explode('<script', ob_get_clean()));
862
+ }
863
+
864
+ //TODO :: do_items if required
865
+ $handles = !empty($wp_styles->queue) ? array_diff($wp_styles->queue, $q_style) : array();
866
+ unset($q_style);
867
+ if(!empty($handles)){
868
+ if(empty($message_data['assets']))
869
+ $message_data['assets'] = array();
870
+
871
+ foreach ($handles as $handle) {
872
+ ob_start();
873
+ $wp_styles->do_item($handle);
874
+ $message_data['assets']['styles'][$handle] = ob_get_clean();
875
+ }
876
+ }
877
+ }
878
+ }
879
+
880
+ function enqueue_admin_styles_and_scripts() {
881
+
882
+ $screen = get_current_screen();
883
+ if ( !in_array( $screen->id, array( 'ig_campaign', 'ig_message' ), true ) ) return;
884
+
885
+ // Register scripts
886
+ wp_register_script( 'icegram_writepanel', $this->plugin_url . '/assets/js/admin.min.js', array ( 'jquery', 'wp-color-picker' ), $this->version );
887
+ // wp_register_script( 'icegram_writepanel', $this->plugin_url . '/assets/js/admin.js' , array ( 'jquery', 'wp-color-picker' ), $this->version );
888
+ // wp_register_script( 'icegram_chosen', $this->plugin_url . '/assets/js/chosen.jquery.min.js' , array ( 'jquery' ), $this->version );
889
+ // wp_register_script( 'icegram_ajax-chosen', $this->plugin_url . '/assets/js/ajax-chosen.jquery.min.js' , array ( 'icegram_chosen' ), $this->version );
890
+ // wp_register_script( 'icegram_tiptip', $this->plugin_url . '/assets/js/jquery.tipTip.min.js' , array ( 'jquery' ), $this->version );
891
+
892
+ wp_enqueue_script( 'icegram_writepanel' );
893
+ // wp_enqueue_script( 'icegram_ajax-chosen' );
894
+ // wp_enqueue_script( 'icegram_tiptip' );
895
+
896
+ $icegram_writepanel_params = array ( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'search_message_nonce' => wp_create_nonce( "search-messages" ), 'home_url' => home_url( '/' ) );
897
+ $this->available_headlines = apply_filters( 'icegram_available_headlines', array() );
898
+ $icegram_writepanel_params = array_merge( $icegram_writepanel_params, array( 'available_headlines' => $this->available_headlines ) );
899
+
900
+ wp_localize_script( 'icegram_writepanel', 'icegram_writepanel_params', $icegram_writepanel_params );
901
+
902
+ wp_enqueue_style( 'dashicons' );
903
+ wp_enqueue_style( 'wp-color-picker' );
904
+ wp_enqueue_style( 'icegram_admin_styles', $this->plugin_url . '/assets/css/admin.min.css', array(), $this->version );
905
+ // wp_enqueue_style( 'icegram_jquery-ui-style', $this->plugin_url . '/assets/css/jquery-ui.min.css', array(), $this->version );
906
+ // wp_enqueue_style( 'icegram_chosen_styles', $this->plugin_url . '/assets/css/chosen.min.css', array(), $this->version );
907
+
908
+ if ( !wp_script_is( 'jquery-ui-datepicker' ) ) {
909
+ wp_enqueue_script( 'jquery-ui-datepicker' );
910
+ }
911
+
912
+ }
913
+
914
+ //execute shortcode in text widget
915
+ function ig_widget_text_filter($content){
916
+ if ( ! preg_match( '/\[[\r\n\t ]*icegram?[\r\n\t ].*?\]/', $content ) )
917
+ return $content;
918
+
919
+ $content = do_shortcode( $content );
920
+
921
+ return $content;
922
+ }
923
+ public static function get_platform() {
924
+ $mobile_detect = new Ig_Mobile_Detect();
925
+ $mobile_detect->setUserAgent();
926
+ if($mobile_detect->isMobile()){
927
+ return ($mobile_detect->isTablet()) ? 'tablet' : 'mobile';
928
+ }else if($mobile_detect->isTablet()){
929
+ return 'tablet';
930
+ }
931
+ return 'laptop';
932
+ }
933
+
934
+ function get_message_data( $message_ids = array(), $preview = false ) {
935
+ global $wpdb;
936
+ $message_data = array();
937
+ $original_message_id_map = array();
938
+ $meta_key = $preview ? 'icegram_message_preview_data' : 'icegram_message_data';
939
+ $message_data_query = "SELECT post_id, meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key LIKE '$meta_key'";
940
+ if ( !empty( $message_ids ) && is_array( $message_ids ) ) {
941
+ // For WPML compatibility
942
+ if ( function_exists('icl_object_id') ) {
943
+ $wpml_settings = get_option('icl_sitepress_settings');
944
+ $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;
945
+
946
+ foreach ($message_ids as $i=>$id ) {
947
+ $translated = icl_object_id( $id, 'ig_message', $original_if_missing );
948
+ $message_ids[ $i ] = $translated;
949
+ $original_message_id_map[ $translated ] = $id;
950
+ }
951
+ }
952
+ $message_ids = array_filter(array_unique($message_ids));
953
+ if ( !empty( $message_ids ) ) {
954
+ $message_data_query .= " AND post_id IN ( " . implode( ',', $message_ids ) . " )";
955
+ $message_data_results = $wpdb->get_results( $message_data_query, 'ARRAY_A' );
956
+ foreach ( $message_data_results as $message_data_result ) {
957
+ $data = maybe_unserialize( $message_data_result['meta_value'] );
958
+ if (!empty($data)) {
959
+ $message_data[$message_data_result['post_id']] = $data;
960
+ // For WPML compatibility
961
+ if (!empty( $original_message_id_map[ $message_data_result['post_id'] ])) {
962
+ $message_data[$message_data_result['post_id']]['original_message_id'] = $original_message_id_map[ $message_data_result['post_id'] ];
963
+ }
964
+ }
965
+ }
966
+ }
967
+ }
968
+
969
+ return $message_data;
970
+ }
971
+
972
+ function get_valid_messages( $message_ids = array(), $campaign_ids = array(), $preview_mode = false, $skip_others = false) {
973
+ list($message_ids, $campaign_ids, $preview_mode, $skip_others) = apply_filters('icegram_get_valid_messages_params', array( $message_ids, $campaign_ids, $preview_mode, $skip_others));
974
+
975
+ $valid_messages = $valid_campaigns = $message_campaign_map = array();
976
+
977
+ $campaign_ids = array_filter(array_unique( (array) $campaign_ids));
978
+ $message_ids = array_filter(array_unique( (array) $message_ids));
979
+ if ( !empty( $campaign_ids ) ) {
980
+ $valid_campaigns = $this->get_valid_campaigns( $campaign_ids, true ,$preview_mode);
981
+ }
982
+
983
+ // When skip_others is true, we won't load campaigns / messages from db
984
+ if (!$skip_others && !$preview_mode) {
985
+ $campaigns = $this->get_valid_campaigns();
986
+ if (!empty($campaigns)) {
987
+ foreach ($campaigns as $id => $campaign) {
988
+ if (!array_key_exists($id, $valid_campaigns)) {
989
+ $valid_campaigns[ $id ] = $campaign;
990
+ }
991
+ }
992
+ }
993
+ }
994
+
995
+ // Create a map to look up campaign id for a given message
996
+ if( !empty( $valid_campaigns ) ) {
997
+ foreach ($valid_campaigns as $id => $campaign) {
998
+ if ($preview_mode) {
999
+ $campaign->messages = get_post_meta( $id, 'campaign_preview', true );
1000
+ }
1001
+ if( !empty( $campaign->messages ) ) {
1002
+ foreach( $campaign->messages as $msg) {
1003
+ $message_ids[] = $msg['id'];
1004
+ if (!array_key_exists( $msg['id'], $message_campaign_map)) {
1005
+ $message_campaign_map[ $msg['id'] ] = $id;
1006
+ }
1007
+ }
1008
+ }
1009
+ }
1010
+ }
1011
+
1012
+ // We don't display same message twice...
1013
+ $message_ids = array_unique($message_ids);
1014
+
1015
+ if( empty( $message_ids ) ) {
1016
+ return array();
1017
+ }
1018
+ $valid_messages = $this->get_message_data( $message_ids, $preview_mode );
1019
+
1020
+ foreach ($valid_messages as $id => $message_data) {
1021
+ // Remove message if required fields are missing
1022
+ if (empty($message_data) || empty($message_data['type'])) {
1023
+ unset( $valid_messages[$id] );
1024
+ continue;
1025
+ }
1026
+ // Remove message if message type is uninstalled
1027
+ $class_name = 'Icegram_Message_Type_' . str_replace(' ', '_', ucwords(str_replace('-', ' ', $message_data['type'])));
1028
+ if( !class_exists( $class_name ) ) {
1029
+ unset( $valid_messages[$id] );
1030
+ continue;
1031
+ }
1032
+ $message_data['delay_time'] = 0;
1033
+ $message_data['retargeting'] = '';
1034
+ $message_data['campaign_id'] = ($preview_mode) ? $_REQUEST['campaign_preview_id'] : '';
1035
+
1036
+ // Pull display time and retargeting rule from campaign if possible
1037
+ $message_id = (!empty($message_data['original_message_id'])) ? $message_data['original_message_id'] : $id;
1038
+ if (!empty($message_campaign_map[ $message_id ])) {
1039
+ //modify campaign id
1040
+ $message_data['campaign_id'] = apply_filters('modify_campaing_id' , $message_campaign_map[ $message_id ] , $message_id) ;
1041
+ $campaign = $valid_campaigns[ floor($message_data['campaign_id']) ];
1042
+ if (!empty($campaign) && $campaign instanceof Icegram_Campaign) {
1043
+ $message_meta_from_campaign = $campaign->get_message_meta_by_id( $message_id );
1044
+ if (!empty($message_meta_from_campaign['time'])) {
1045
+ $message_data['delay_time'] = $message_meta_from_campaign['time'];
1046
+ }
1047
+ //set delay time -1 if shortcode with content
1048
+ foreach ($this->shortcode_instances as $i => $value) {
1049
+ $campaign_ids = explode( ',', $value['campaigns']);
1050
+ if(!empty($value['with_content']) && in_array($message_data['campaign_id'], $campaign_ids)){
1051
+ $message_data['delay_time'] = -1;
1052
+ }
1053
+ }
1054
+ $rule_value = $campaign->get_rule_value('retargeting');
1055
+ $message_data['retargeting'] = !empty( $rule_value['retargeting'] ) ? $rule_value['retargeting'] : '';
1056
+ $message_data['expiry_time'] = !empty( $rule_value['retargeting'] ) ? $rule_value['expiry_time'] : '';
1057
+ $rule_value_retargeting_clicked = $campaign->get_rule_value('retargeting_clicked');
1058
+ $message_data['retargeting_clicked'] = !empty( $rule_value_retargeting_clicked['retargeting_clicked'] ) ? $rule_value_retargeting_clicked['retargeting_clicked'] : '';
1059
+ $message_data['expiry_time_clicked'] = !empty( $rule_value_retargeting_clicked['retargeting_clicked'] ) ? $rule_value_retargeting_clicked['expiry_time_clicked'] : '';
1060
+
1061
+ }
1062
+ }
1063
+ $valid_messages[$id] = $message_data;
1064
+ }
1065
+ $valid_messages = apply_filters( 'icegram_valid_messages', $valid_messages );
1066
+
1067
+ return $valid_messages;
1068
+ }
1069
+
1070
+ function get_valid_campaigns( $campaign_ids = array(), $skip_page_check = false ,$preview_mode = false) {
1071
+ global $wpdb;
1072
+ if ( empty( $campaign_ids ) ) {
1073
+ $sql = "SELECT pm.post_id
1074
+ FROM {$wpdb->prefix}posts AS p
1075
+ LEFT JOIN {$wpdb->prefix}postmeta AS pm ON ( pm.post_id = p.ID )
1076
+ WHERE p.post_status = 'publish' ";
1077
+ // Filter handler within this file (and possibly others) will append to this SQL
1078
+ // and provide arguments for wpdb->prepare if needed.
1079
+ // First element in the array is SQL, remaining are values for placeholders in SQL
1080
+ $sql_params = apply_filters( 'icegram_get_valid_campaigns_sql', array($sql), array() );
1081
+ $campaign_ids = $wpdb->get_col( $wpdb->prepare( array_shift($sql_params), $sql_params ) );
1082
+ }
1083
+ $valid_campaigns = array();
1084
+ foreach ( (array) $campaign_ids as $campaign_id ) {
1085
+ $campaign = new Icegram_Campaign( $campaign_id );
1086
+ if ( $preview_mode || $campaign->is_valid( array('skip_page_check' => $skip_page_check) ) ) {
1087
+ $valid_campaigns[$campaign_id] = $campaign;
1088
+ } else {
1089
+ // Campgain is invalid!
1090
+ }
1091
+
1092
+ }
1093
+ $valid_campaigns = apply_filters('icegram_valid_campaigns', $valid_campaigns);
1094
+ return $valid_campaigns;
1095
+ }
1096
+
1097
+ function append_to_valid_campaigns_sql( $sql_params = array(), $options = array() ) {
1098
+ // Page check conditions
1099
+ //$pid = $_GET['page_id'];
1100
+ $pid = Icegram::get_current_page_id();
1101
+ $sql = " AND (
1102
+ pm.meta_key = 'icegram_campaign_target_rules' AND (
1103
+ ( pm.meta_value LIKE '%%%s%%' )
1104
+ OR ( pm.meta_value LIKE '%%%s%%' AND pm.meta_value LIKE '%%%s%%' AND pm.meta_value LIKE '%%%s%%' )
1105
+ ";
1106
+ $sql_params[] = 's:8:"sitewide";s:3:"yes";';
1107
+ $sql_params[] = 's:10:"other_page";s:3:"yes";';
1108
+ $sql_params[] = 's:7:"page_id";a:';
1109
+ $sql_params[] = serialize( (string) $pid );
1110
+ //local url
1111
+ $sql .= " OR ( pm.meta_value LIKE '%%%s%%' )";
1112
+ $sql_params[] = 's:9:"local_url";s:3:"yes";';
1113
+ if(!empty($_REQUEST['cache_compatibility']) && $_REQUEST['cache_compatibility'] == 'yes'){
1114
+ $is_home = (!empty($_REQUEST['is_home']) && $_REQUEST['is_home'] === 'true') ? true : false ;
1115
+ }else{
1116
+ $is_home = (is_home() || is_front_page()) ? true : false;
1117
+ }
1118
+ if ($is_home === true ) {
1119
+ $sql .= " OR ( pm.meta_value LIKE '%%%s%%' )";
1120
+ $sql_params[] = 's:8:"homepage";s:3:"yes";';
1121
+ }
1122
+ $sql .=" ) )";
1123
+
1124
+ $sql_params[0] .= $sql;
1125
+ //s:9:"logged_in";s:3:"all";
1126
+
1127
+ return $sql_params;
1128
+ }
1129
+
1130
+ // Include all classes required for Icegram plugin
1131
+ function include_classes() {
1132
+
1133
+ $classes = glob( $this->plugin_path . '/classes/*.php' );
1134
+ foreach ( $classes as $file ) {
1135
+ // Files with 'admin' in their name are included only for admin section
1136
+ if ( is_file( $file ) && ( (strpos($file, '-admin') >= 0 && is_admin()) || (strpos($file, '-admin') === false) ) ) {
1137
+ include_once $file;
1138
+ }
1139
+ }
1140
+
1141
+ // Load built in message types
1142
+ $icegram_message_type_basedirs = glob( $this->plugin_path . '/message-types/*' );
1143
+ // Allow other plugins to add new message types
1144
+ $icegram_message_type_basedirs = apply_filters( 'icegram_message_type_basedirs', $icegram_message_type_basedirs );
1145
+ // Set up different message type classes
1146
+ foreach ( $icegram_message_type_basedirs as $dir ) {
1147
+ $type = basename ( $dir );
1148
+ $class_file = $dir . "/main.php";
1149
+ if( is_file( $class_file ) ) {
1150
+ include_once( $class_file );
1151
+ }
1152
+ $class_name = 'Icegram_Message_Type_' . str_replace(' ', '_', ucwords(str_replace('-', ' ', $type)));
1153
+ if (class_exists($class_name)) {
1154
+ $this->message_type_objs[ $type ] = new $class_name();
1155
+ }
1156
+ }
1157
+ $this->message_types = apply_filters( 'icegram_message_types', array() );
1158
+
1159
+ }
1160
+
1161
+ // Register Campaign post type
1162
+ function register_campaign_post_type() {
1163
+ $labels = array(
1164
+ 'name' => __( 'Campaigns', 'icegram' ),
1165
+ 'singular_name' => __( 'Campaign', 'icegram' ),
1166
+ 'add_new' => __( 'Add New Campaign', 'icegram' ),
1167
+ 'add_new_item' => __( 'Add New Campaign', 'icegram' ),
1168
+ 'edit_item' => __( 'Edit Campaign', 'icegram' ),
1169
+ 'new_item' => __( 'New Campaign', 'icegram' ),
1170
+ 'all_items' => __( 'Campaigns', 'icegram' ),
1171
+ 'view_item' => __( 'View Campaign', 'icegram' ),
1172
+ 'search_items' => __( 'Search Campaigns', 'icegram' ),
1173
+ 'not_found' => __( 'No campaigns found', 'icegram' ),
1174
+ 'not_found_in_trash' => __( 'No campaigns found in Trash', 'icegram' ),
1175
+ 'parent_item_colon' => __( '', 'icegram' ),
1176
+ 'menu_name' => __( 'Icegram', 'icegram' )
1177
+ );
1178
+
1179
+ $args = array(
1180
+ 'labels' => $labels,
1181
+ 'menu_icon' => 'dashicons-info',
1182
+ 'public' => false,
1183
+ 'publicly_queryable' => false,
1184
+ 'show_ui' => true,
1185
+ 'show_in_menu' => true,
1186
+ 'query_var' => true,
1187
+ 'rewrite' => array( 'slug' => 'ig_campaign' ),
1188
+ 'capability_type' => 'post',
1189
+ 'has_archive' => false,
1190
+ 'hierarchical' => false,
1191
+ 'menu_position' => null,
1192
+ 'menu_icon' => $this->plugin_url . '/assets/images/icegram-logo-branding-18-white.png' ,
1193
+ 'supports' => array( 'title', 'editor' )
1194
+ );
1195
+
1196
+ register_post_type( 'ig_campaign', $args );
1197
+ }
1198
+
1199
+ // Register Message post type
1200
+ function register_message_post_type() {
1201
+ $labels = array(
1202
+ 'name' => __( 'Messages', 'icegram' ),
1203
+ 'singular_name' => __( 'Message', 'icegram' ),
1204
+ 'add_new' => __( 'Create New', 'icegram' ),
1205
+ 'add_new_item' => __( 'Create New Message', 'icegram' ),
1206
+ 'edit_item' => __( 'Edit Message', 'icegram' ),
1207
+ 'new_item' => __( 'New Message', 'icegram' ),
1208
+ 'all_items' => __( 'Messages', 'icegram' ),
1209
+ 'view_item' => __( 'View Message', 'icegram' ),
1210
+ 'search_items' => __( 'Search Messages', 'icegram' ),
1211
+ 'not_found' => __( 'No messages found', 'icegram' ),
1212
+ 'not_found_in_trash' => __( 'No messages found in Trash', 'icegram' ),
1213
+ 'parent_item_colon' => __( '', 'icegram' ),
1214
+ 'menu_name' => __( 'Messages', 'icegram' )
1215
+ );
1216
+
1217
+ $args = array(
1218
+ 'labels' => $labels,
1219
+ 'public' => false,
1220
+ 'publicly_queryable' => false,
1221
+ 'show_ui' => true,
1222
+ 'show_in_menu' => 'edit.php?post_type=ig_campaign',
1223
+ 'query_var' => true,
1224
+ 'rewrite' => array( 'slug' => 'ig_message' ),
1225
+ 'capability_type' => 'post',
1226
+ 'has_archive' => false,
1227
+ 'hierarchical' => false,
1228
+ 'menu_position' => null,
1229
+ 'supports' => array( 'title' )
1230
+ );
1231
+
1232
+ register_post_type( 'ig_message', $args );
1233
+ }
1234
+
1235
+
1236
+ function import( $data = array() ) {
1237
+ if ( empty( $data['campaigns'] ) && empty( $data['messages'] ) ) return;
1238
+
1239
+ $default_theme = $default_type = '';
1240
+ $first_message_type = current( $this->message_types );
1241
+
1242
+ if( is_array( $first_message_type ) ) {
1243
+ $default_type = $first_message_type['type'];
1244
+ if( !empty( $first_message_type['themes'] ) ) {
1245
+ $default_theme = key( $first_message_type['themes'] );
1246
+ }
1247
+ }
1248
+
1249
+ $new_campaign_ids = array();
1250
+ foreach ( (array) $data['campaigns'] as $campaign ) {
1251
+
1252
+ $args = array(
1253
+ 'post_content' => ( !empty( $campaign['post_content'] ) ) ? esc_attr( $campaign['post_content'] ) : '',
1254
+ 'post_name' => ( !empty( $campaign['post_title'] ) ) ? sanitize_title( $campaign['post_title'] ) : '',
1255
+ 'post_title' => ( !empty( $campaign['post_title'] ) ) ? $campaign['post_title'] : '',
1256
+ 'post_status' => ( !empty( $campaign['post_status'] ) ) ? $campaign['post_status'] : 'draft',
1257
+ 'post_type' => 'ig_campaign'
1258
+ );
1259
+
1260
+ $new_campaign_id = wp_insert_post( $args );
1261
+ $new_campaign_ids[] = $new_campaign_id;
1262
+
1263
+ if ( !empty( $campaign['target_rules'] ) ) {
1264
+
1265
+ $defaults = array (
1266
+ 'homepage' => 'yes',
1267
+ 'when' => 'always',
1268
+ 'from' => '',
1269
+ 'to' => '',
1270
+ 'mobile' => 'yes',
1271
+ 'tablet' => 'yes',
1272
+ 'laptop' => 'yes',
1273
+ 'logged_in' => 'all'
1274
+ );
1275
+
1276
+ $target_rules = wp_parse_args( $campaign['target_rules'], $defaults );
1277
+ update_post_meta( $new_campaign_id, 'icegram_campaign_target_rules', $target_rules );
1278
+ }
1279
+
1280
+ if ( !empty( $campaign['messages'] ) ) {
1281
+
1282
+ $messages = array();
1283
+
1284
+ foreach ( $campaign['messages'] as $message ) {
1285
+
1286
+ if ( !is_array( $message ) ) continue;
1287
+
1288
+ $args = array(
1289
+ 'post_content' => ( !empty( $message['message'] ) ) ? esc_attr( $message['message'] ) : '',
1290
+ 'post_name' => ( !empty( $message['post_title'] ) ) ? sanitize_title( $message['post_title'] ) : '',
1291
+ 'post_title' => ( !empty( $message['post_title'] ) ) ? $message['post_title'] : '',
1292
+ 'post_status' => ( !empty( $message['post_status'] ) ) ? $message['post_status'] : 'publish',
1293
+ 'post_type' => 'ig_message'
1294
+ );
1295
+
1296
+ $new_message_id = wp_insert_post( $args );
1297
+ $new_message = array(
1298
+ 'id' => $new_message_id,
1299
+ 'time' => ( !empty( $message['time'] ) ) ? $message['time'] : 0
1300
+ );
1301
+ //for gallery + CTA another message
1302
+ if(!empty($message['cta']) && $message['cta'] == 'cta_another_message' && !empty($message['cta_linked_message_id']) && $message['cta_linked_message_id'] == 'auto'){
1303
+ $prev_message = end($messages);
1304
+ $message['cta_linked_message_id'] = $prev_message['id'];
1305
+ array_pop($messages);
1306
+ }
1307
+ $messages[] = $new_message;
1308
+
1309
+ unset( $message['post_content'] );
1310
+ unset( $message['time'] );
1311
+
1312
+ $message['id'] = $new_message_id;
1313
+
1314
+ $defaults = array (
1315
+ 'post_title' => '',
1316
+ 'type' => $default_type,
1317
+ 'theme' => $default_theme,
1318
+ 'animation' => '',
1319
+ 'headline' => '',
1320
+ 'label' => '',
1321
+ 'link' => '',
1322
+ 'icon' => '',
1323
+ 'message' => '',
1324
+ 'position' => '',
1325
+ 'text_color' => '#000000',
1326
+ 'bg_color' => '#ffffff',
1327
+ 'custom_code' => '',
1328
+ 'id' => ''
1329
+ );
1330
+ $icegram_message_data = wp_parse_args( $message, $defaults );
1331
+ if ( !empty( $icegram_message_data ) ) {
1332
+ update_post_meta( $new_message_id, 'icegram_message_data', $icegram_message_data );
1333
+ update_post_meta( $new_message_id, 'icegram_message_preview_data', $icegram_message_data );
1334
+ }
1335
+ }//foreach
1336
+
1337
+ if ( !empty( $campaign['messages'] ) ) {
1338
+ update_post_meta( $new_campaign_id, 'messages', $messages );
1339
+ update_post_meta( $new_campaign_id, 'campaign_preview', $messages );
1340
+ }
1341
+ }//if
1342
+ }
1343
+ return $new_campaign_ids;
1344
+
1345
+ }
1346
+
1347
+ function import_sample_data ($data = array() ){
1348
+ $new_campaign_ids = $this->import($data);
1349
+ if( !empty( $new_campaign_ids ) ) {
1350
+ update_option( 'icegram_sample_data_imported', $new_campaign_ids );
1351
+ }
1352
+ }
1353
+
1354
+ function import_gallery_item(){
1355
+ if(!empty($_REQUEST['action']) && $_REQUEST['action'] == 'fetch_messages' && !empty($_REQUEST['campaign_id']) && !empty($_REQUEST['gallery_item'])){
1356
+ $params = $_REQUEST;
1357
+ $imported_gallery_items = array();
1358
+ // $url = 'http://192.168.0.112/~sandhya/icegram-andrea/wp-admin/admin-ajax.php';
1359
+ $url = 'http://www.icegram.com/gallery/wp-admin/admin-ajax.php';
1360
+ $options = array(
1361
+ 'timeout' => 15,
1362
+ 'method' => 'POST',
1363
+ 'body' => http_build_query( $params )
1364
+ );
1365
+ $response = wp_remote_request( $url, $options );
1366
+ $response_code = wp_remote_retrieve_response_code( $response );
1367
+ if ( $response_code == 200 ) {
1368
+ $new_campaign_ids = $this->import(json_decode($response['body'] ,true));
1369
+ if(!empty($new_campaign_ids)){
1370
+ $imported_gallery_items = get_option('ig_imported_gallery_items');
1371
+ $imported_gallery_items[] = $_REQUEST['gallery_item'];
1372
+ update_option( 'ig_imported_gallery_items', $imported_gallery_items );
1373
+ $location = admin_url( 'post.php?post='.$new_campaign_ids[0].'&action=edit');
1374
+ header('Location:'.$location);
1375
+ exit;
1376
+ }else{
1377
+ wp_safe_redirect($_SERVER['HTTP_REFERER']);
1378
+ }
1379
+ }
1380
+ }
1381
+ }
1382
+ function get_sample_data() {
1383
+
1384
+ return array(
1385
+ 'campaigns' => array(
1386
+ array(
1387
+ 'post_name' => '',
1388
+ 'post_title' => 'My First Icegram Campaign',
1389
+ 'target_rules' => array (
1390
+ 'homepage' => 'yes',
1391
+ 'when' => 'always',
1392
+ 'from' => '',
1393
+ 'to' => '',
1394
+ 'mobile' => 'yes',
1395
+ 'tablet' => 'yes',
1396
+ 'laptop' => 'yes',
1397
+ 'logged_in' => 'all'
1398
+ ),
1399
+ 'messages' => array(
1400
+ array (
1401
+ 'post_title' => 'Get 2x more Contacts with Your Website',
1402
+ 'post_status' => 'publish',
1403
+ 'time' => '0',
1404
+ 'type' => 'action-bar',
1405
+ 'theme' => 'hello',
1406
+ 'headline' => 'Get 2x more Contacts with Your Website',
1407
+ 'label' => 'Show Me How',
1408
+ 'link' => '',
1409
+ 'icon' => '',
1410
+ 'message' => 'Instant Results Guaranteed',
1411
+ 'position' => '01',
1412
+ 'text_color' => '#000000',
1413
+ 'bg_color' => '#eb593c'
1414
+ ),
1415
+ array (
1416
+ 'post_title' => '20% Off Coupon',
1417
+ 'post_status' => 'publish',
1418
+ 'time' => '4',
1419
+ 'type' => 'messenger',
1420
+ 'theme' => 'social',
1421
+ 'animation' => 'slide',
1422
+ 'headline' => '20% Off - for you',
1423
+ 'label' => '',
1424
+ 'link' => '',
1425
+ 'icon' => '',
1426
+ 'message' => "Hey there! We are running a <strong>special 20% off this week</strong> for registered users - like you.
1427
+
1428
+ Use coupon <code>LOYALTY20</code> during checkout.",
1429
+ 'position' => '22',
1430
+ 'text_color' => '#000000',
1431
+ 'bg_color' => '#ffffff'
1432
+ ),
1433
+ array (
1434
+ 'post_title' => 'How this blog makes over $34,800 / month for FREE.',
1435
+ 'post_status' => 'publish',
1436
+ 'time' => '10',
1437
+ 'type' => 'popup',
1438
+ 'theme' => 'air-mail',
1439
+ 'headline' => 'How this blog makes over $34,800 / month for FREE.',
1440
+ 'label' => 'FREE INSTANT ACCESS',
1441
+ 'link' => '',
1442
+ 'icon' => '',
1443
+ 'message' => "This website earns over $30,000 every month, every single month, almost on autopilot. I have 4 other sites with similar results. All I do is publish new regular content every week.
1444
+
1445
+ <strong>Download my free kit to learn how I do this.</strong>
1446
+
1447
+ <ul>
1448
+ <li>How to choose blog topics that create long term value</li>
1449
+ <li>The type of blog post that will make your site go viral</li>
1450
+ <li>How to free yourself from the routine tasks</li>
1451
+ <li>Resources and tips to get started quickly</li>
1452
+ <li>Private members club to connect with fellow owners</li>
1453
+ </ul>",
1454
+ 'text_color' => '#000000',
1455
+ 'bg_color' => '#ffffff'
1456
+
1457
+ ),
1458
+ array (
1459
+ 'post_title' => 'Exclusive Marketing Report',
1460
+ 'post_status' => 'publish',
1461
+ 'time' => '6',
1462
+ 'type' => 'toast',
1463
+ 'theme' => 'stand-out',
1464
+ 'animation' => 'pop',
1465
+ 'headline' => 'Exclusive Marketing Report',
1466
+ 'label' => '',
1467
+ 'link' => '',
1468
+ 'icon' => '',
1469
+ 'message' => 'FREE for every subscriber. Click here to download it.',
1470
+ 'position' => '02',
1471
+ 'text_color' => '#000000',
1472
+ 'bg_color' => '#ffffff'
1473
+ )
1474
+
1475
+ )
1476
+ )
1477
+ )
1478
+ );
1479
+ }
1480
+
1481
+ function remove_preview_button() {
1482
+ global $post_type;
1483
+ if( $post_type == 'ig_message' || $post_type == 'ig_campaign' ) {
1484
+ ?>
1485
+ <style type="text/css">
1486
+ #message.updated.below-h2{ display: none; }
1487
+ #preview-action { display:none; }
1488
+ </style>
1489
+ <?php
1490
+ }
1491
+ }
1492
+
1493
+
1494
+ function remove_row_actions( $actions, $post ) {
1495
+
1496
+ if ( empty( $post->post_type ) || ( $post->post_type != 'ig_campaign' && $post->post_type != 'ig_message' ) ) return $actions;
1497
+
1498
+ unset( $actions['inline hide-if-no-js'] );
1499
+ unset( $actions['view'] );
1500
+
1501
+ return $actions;
1502
+
1503
+ }
1504
+
1505
+ function identify_current_page() {
1506
+ global $post, $wpdb;
1507
+
1508
+ $obj = get_queried_object();
1509
+ $id = 0;
1510
+ if( !empty( $obj->has_archive ) ) {
1511
+ $id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type='page'", $obj->has_archive ) );
1512
+ } elseif( is_object( $post ) && isset( $post->ID ) ) {
1513
+ $id = $post->ID;
1514
+ }
1515
+ $id = apply_filters('icegram_identify_current_page', $id );
1516
+ self::$current_page_id = $id;
1517
+ }
1518
+
1519
+ static function get_current_page_id() {
1520
+ global $post;
1521
+ if (!empty($_REQUEST['page_id']) && is_numeric($_REQUEST['page_id'])) {
1522
+ $post = get_post($_REQUEST['page_id']);
1523
+ setup_postdata( $post );
1524
+ // WPML check
1525
+ $id = apply_filters('icegram_identify_current_page', $post->ID );
1526
+ self::$current_page_id = $id;
1527
+ }
1528
+ return self::$current_page_id;
1529
+ }
1530
+ static function get_current_page_url() {
1531
+ if(!empty($_REQUEST['cache_compatibility']) && $_REQUEST['cache_compatibility'] == 'yes'){
1532
+ $pageURL = (!empty($_REQUEST['referral_url'])) ? $_REQUEST['referral_url'] : '';
1533
+ }else{
1534
+ $pageURL = 'http';
1535
+ if( isset($_SERVER["HTTPS"]) ) {
1536
+ if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
1537
+ }
1538
+ $pageURL .= "://";
1539
+ if ($_SERVER["SERVER_PORT"] != "80") {
1540
+ $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
1541
+ } else {
1542
+ $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
1543
+ }
1544
+ }
1545
+ return $pageURL;
1546
+ }
1547
+
1548
+ function wpml_get_parent_id( $id ) {
1549
+ global $post;
1550
+ if (function_exists('icl_object_id') && function_exists('icl_get_default_language') ) {
1551
+ $id = icl_object_id($id, $post->post_type, true, icl_get_default_language() );
1552
+ }
1553
+ return $id;
1554
+ }
1555
+
1556
+
1557
+ /**
1558
+ * Our implementation of wpautop to preserve script and style tags
1559
+ */
1560
+ function before_wpautop($pee) {
1561
+ if ( trim($pee) === '' ) {
1562
+ $this->_wpautop_tags = array();
1563
+ return '';
1564
+ }
1565
+
1566
+ $tags = array();
1567
+ // Pull out tags and add placeholders
1568
+ list( $pee, $tags['pre'] ) = $this->_wpautop_add_tag_placeholders( $pee, 'pre' );
1569
+ list( $pee, $tags['script'] ) = $this->_wpautop_add_tag_placeholders( $pee, 'script' );
1570
+ list( $pee, $tags['style'] ) = $this->_wpautop_add_tag_placeholders( $pee, 'style' );
1571
+ $this->_wpautop_tags = $tags;
1572
+
1573
+ if( !empty( $pre_tags ) )
1574
+ $pee = $this->_wpautop_replace_tag_placeholders( $pee, $pre_tags );
1575
+ if( !empty( $script_tags ) )
1576
+ $pee = $this->_wpautop_replace_tag_placeholders( $pee, $script_tags );
1577
+ if( !empty( $style_tags ) )
1578
+ $pee = $this->_wpautop_replace_tag_placeholders( $pee, $style_tags );
1579
+
1580
+ return $pee;
1581
+ }
1582
+
1583
+ function after_wpautop($pee) {
1584
+ if ( trim($pee) === '' || empty($this->_wpautop_tags) )
1585
+ return '';
1586
+
1587
+ // Replace placeholders with original content
1588
+ if (!empty($this->_wpautop_tags['pre'])) {
1589
+ $pee = $this->_wpautop_replace_tag_placeholders( $pee, $this->_wpautop_tags['pre'] );
1590
+ }
1591
+ if (!empty($this->_wpautop_tags['script'])) {
1592
+ $pee = $this->_wpautop_replace_tag_placeholders( $pee, $this->_wpautop_tags['script'] );
1593
+ }
1594
+ if (!empty($this->_wpautop_tags['style'])) {
1595
+ $pee = $this->_wpautop_replace_tag_placeholders( $pee, $this->_wpautop_tags['style'] );
1596
+ }
1597
+
1598
+ $this->_wpautop_tags = array();
1599
+
1600
+ return $pee;
1601
+ }
1602
+
1603
+ function _wpautop_add_tag_placeholders( $pee, $tag ) {
1604
+ $tags = array();
1605
+
1606
+ if ( false !== strpos( $pee, "<{$tag}" ) ) {
1607
+ $pee_parts = explode( "</{$tag}>", $pee );
1608
+ $last_pee = array_pop( $pee_parts );
1609
+ $pee = '';
1610
+ $i = 0;
1611
+
1612
+ foreach ( $pee_parts as $pee_part ) {
1613
+ $start = strpos( $pee_part, "<{$tag}" );
1614
+
1615
+ // Malformed html?
1616
+ if ( false === $start ) {
1617
+ $pee .= $pee_part;
1618
+ continue;
1619
+ }
1620
+
1621
+ $name = "<{$tag} wp-{$tag}-tag-$i></{$tag}>";
1622
+ $tags[ $name ] = substr( $pee_part, $start ) . "</{$tag}>";
1623
+
1624
+ $pee .= substr( $pee_part, 0, $start ) . $name;
1625
+ $i++;
1626
+ }
1627
+
1628
+ $pee .= $last_pee;
1629
+ }
1630
+
1631
+ return array( $pee, $tags );
1632
+ }
1633
+
1634
+ function _wpautop_replace_tag_placeholders( $pee, $tags ) {
1635
+ if ( ! empty( $tags ) ) {
1636
+ $pee = str_replace( array_keys( $tags ), array_values( $tags ), $pee );
1637
+ }
1638
+
1639
+ return $pee;
1640
+ }
1641
+
1642
+ static function duplicate( $original_id ){
1643
+ // Get access to the database
1644
+ global $wpdb;
1645
+ // Get the post as an array
1646
+ $duplicate = get_post( $original_id, 'ARRAY_A' );
1647
+ // Modify some of the elements
1648
+ $duplicate['post_title'] = $duplicate['post_title'].' '.__('Copy', 'icegram');
1649
+ $duplicate['post_status'] = 'draft';
1650
+ // Set the post date
1651
+ $timestamp = current_time('timestamp',0);
1652
+
1653
+ $duplicate['post_date'] = date('Y-m-d H:i:s', $timestamp);
1654
+
1655
+ // Remove some of the keys
1656
+ unset( $duplicate['ID'] );
1657
+ unset( $duplicate['guid'] );
1658
+ unset( $duplicate['comment_count'] );
1659
+
1660
+ // Insert the post into the database
1661
+ $duplicate_id = wp_insert_post( $duplicate );
1662
+
1663
+ // Duplicate all taxonomies/terms
1664
+ $taxonomies = get_object_taxonomies( $duplicate['post_type'] );
1665
+ foreach( $taxonomies as $taxonomy ) {
1666
+ $terms = wp_get_post_terms( $original_id, $taxonomy, array('fields' => 'names') );
1667
+ wp_set_object_terms( $duplicate_id, $terms, $taxonomy );
1668
+ }
1669
+
1670
+ // Duplicate all custom fields
1671
+ $custom_fields = get_post_custom( $original_id );
1672
+ foreach ( $custom_fields as $key => $value ) {
1673
+ add_post_meta( $duplicate_id, $key, maybe_unserialize($value[0]) );
1674
+ }
1675
+ $location = admin_url( 'post.php?post='.$duplicate_id.'&action=edit');
1676
+ header('Location:'.$location);
1677
+ exit;
1678
+ }
1679
+
1680
+ public static function form_submission_validate_request($request_data){
1681
+ if(!empty($request_data)){
1682
+ // Check for Remote Rainmaker form submission request
1683
+ $request_data['is_remote'] = false;
1684
+ if(!empty($request_data['ig_mode']) && $request_data['ig_mode'] === 'remote'){
1685
+ $ig_remote_url = $request_data['ig_remote_url'];
1686
+ if(!empty($request_data['ig_campaign_id'])){
1687
+ $rules = get_post_meta( $request_data['ig_campaign_id'], 'icegram_campaign_target_rules', true );
1688
+ if( !empty($rules['remote_urls']) && is_array($rules['remote_urls']) ){
1689
+ foreach ($rules['remote_urls'] as $remote_url_pattern) {
1690
+ $valid = Icegram_Campaign::is_valid_url($remote_url_pattern , $ig_remote_url);
1691
+ if( $valid ){
1692
+ $request_data['is_remote'] = true;
1693
+ break;
1694
+ }
1695
+ }
1696
+ //TODO :: discard the the remote request and data
1697
+ // if($request_data['is_remote'] == false){
1698
+ // return array();
1699
+ // }
1700
+ }
1701
+
1702
+ }
1703
+ }
1704
+ }
1705
+ return $request_data;
1706
+ }
1707
+ }
1708
+
1709
+
1710
+ function initialize_icegram() {
1711
+ global $icegram;
1712
+
1713
+ // i18n / l10n - load translations
1714
+ load_plugin_textdomain( 'icegram', false, dirname( plugin_basename( __FILE__ ) ) . '/lang/' );
1715
+
1716
+ $icegram = new Icegram();
1717
+ do_action('icegram_loaded');
1718
+ }
1719
+
1720
+ add_action( 'plugins_loaded', 'initialize_icegram' );
1721
+ register_activation_hook( __FILE__, array( 'Icegram', 'install' ) );
trunk/lang/icegram-de_DE.mo ADDED
Binary file
trunk/lang/icegram-de_DE.po ADDED
@@ -0,0 +1,1125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Icegram 1.1.1\n"
4
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/icegram\n"
5
+ "POT-Creation-Date: 2015-09-24 12:56+0100\n"
6
+ "PO-Revision-Date: 2015-12-30 16:49+0100\n"
7
+ "Last-Translator: Alessandro Massasso <alessandro.massasso@drivek.it>\n"
8
+ "Language-Team: Icegram Team <hello@icegram.com>\n"
9
+ "Language: de_DE\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
16
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
17
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
18
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
19
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
20
+ "X-Poedit-Basepath: .\n"
21
+ "X-Generator: Poedit 1.8.6\n"
22
+ "X-Loco-Target-Locale: it_IT\n"
23
+ "X-Poedit-SearchPath-0: ../.\n"
24
+
25
+ #: .././about-icegram.php:128 .././classes/class-icegram-campaign-admin.php:453
26
+ msgid "Name"
27
+ msgstr "Name"
28
+
29
+ #: .././about-icegram.php:132
30
+ msgid "E-mail"
31
+ msgstr "Email"
32
+
33
+ #: .././about-icegram.php:136
34
+ msgid "Subject"
35
+ msgstr "Betreff"
36
+
37
+ #: .././about-icegram.php:140 .././icegram.php:1015
38
+ #: .././classes/class-icegram-campaign-admin.php:47
39
+ #: .././classes/class-icegram-campaign-admin.php:64
40
+ msgid "Message"
41
+ msgstr "Nachricht"
42
+
43
+ #: .././about-icegram.php:167 .././icegram.php:417
44
+ msgid "Welcome to Icegram"
45
+ msgstr "Wilkommen zu Icegram"
46
+
47
+ #: .././about-icegram.php:169
48
+ msgid ""
49
+ "Your sample campaign is ready. We've added a few messages for you to test."
50
+ msgstr ""
51
+ "Ihre Probe-Kampagne ist fertig. Wir haben ein paar Nachrichten für Sie zum "
52
+ "testen hinzugefügt."
53
+
54
+ #: .././about-icegram.php:177
55
+ msgid "Edit & Publish it"
56
+ msgstr "Editieren & Veröffentlichen"
57
+
58
+ #: .././about-icegram.php:178
59
+ msgid "OR"
60
+ msgstr "oder"
61
+
62
+ #: .././about-icegram.php:179
63
+ msgid "Preview Campaign"
64
+ msgstr "Vorschau Kampagne"
65
+
66
+ #: .././about-icegram.php:184
67
+ #, php-format
68
+ msgid "Version: %s"
69
+ msgstr "Version: %s"
70
+
71
+ #: .././about-icegram.php:187
72
+ msgid "Questions? Need Help?"
73
+ msgstr "Fragen? Brauchen Sie Hilfe?"
74
+
75
+ #: .././about-icegram.php:188 .././about-icegram.php:295
76
+ msgid "Contact Us"
77
+ msgstr "Kontaktieren Sie uns."
78
+
79
+ #: .././about-icegram.php:198
80
+ msgid ""
81
+ "Do read Icegram's core concepts below to understand how you can use Icegram "
82
+ "to inspire, convert and engage your audience."
83
+ msgstr ""
84
+ "Sie lesen unten die Kernkonzepte von Icegram, um zu verstehen, wie Sie "
85
+ "Icegram verwenden, um zu inspirieren und um sich für ihre Zielgruppe "
86
+ "engagieren."
87
+
88
+ #: .././about-icegram.php:203 .././icegram.php:1014 .././icegram.php:1020
89
+ #: .././icegram.php:1026
90
+ msgid "Messages"
91
+ msgstr "Nachrichten"
92
+
93
+ #: .././about-icegram.php:204
94
+ msgid "A 'Message' is a communication you want to deliver to your audience."
95
+ msgstr ""
96
+ "Eine 'Nachricht' ist ein Text den Sie brauchen, wenn Sie ihr Publikum "
97
+ "beliefern möchten."
98
+
99
+ #: .././about-icegram.php:205
100
+ msgid "And Icegram comes with not one, but four message types."
101
+ msgstr "Icegram kommt nicht mit einen Nachrichtentyp, sondern mit vier."
102
+
103
+ #: .././about-icegram.php:206
104
+ msgid ""
105
+ "Different message types look and behave differently, but they all have many "
106
+ "common characteristics. For instance, most message types will allow you to "
107
+ "set a headline, a body text, label for the ‘call to action’ button, a link "
108
+ "for that button, theme and styling options, animation effect and position on "
109
+ "screen where that message should show."
110
+ msgstr ""
111
+ "Unterschiedliche Nachrichtentypen zu schauen und sich anders verhalten, aber "
112
+ "sie alle haben viele gemeinsame Merkmale. Zum Beispiel werden die meisten "
113
+ "Nachrichtentypen können Sie eine Überschrift, ein Textkörper, Bezeichnung "
114
+ "für die Schaltfläche \"Aufruf zum Handeln\", einen Link für diese Taste, "
115
+ "Thema und Styling-Optionen, Animationseffekt und die Position auf dem "
116
+ "Bildschirm festgelegt, wo die Nachricht sollte zeigen ."
117
+
118
+ #: .././about-icegram.php:210
119
+ msgid "Action Bar"
120
+ msgstr "Aktionsleiste"
121
+
122
+ #: .././about-icegram.php:212
123
+ msgid ""
124
+ "An action bar is a proven attention grabber. It shows up as a solid bar "
125
+ "either at top or bottom. Use it for your most important messages or time "
126
+ "sensitive announcements. Put longer content in it and it acts like a "
127
+ "collapsible panel!"
128
+ msgstr ""
129
+ "Eine Aktionsleiste erregt erwiesenen die Aufmerksamkeit. Sie zeigt sich als "
130
+ "eine solide Leiste entweder oben oder unten. Verwenden Sie es für Ihre "
131
+ "wichtigsten Nachrichten oder zeitkritische Ankündigungen. Setzen Sie mehr "
132
+ "Inhalte und es wirkt wie ein zusammenklappbare Tafel!"
133
+
134
+ #: .././about-icegram.php:213
135
+ msgid "Messenger"
136
+ msgstr "Messenger"
137
+
138
+ #: .././about-icegram.php:215
139
+ msgid ""
140
+ "A messenger is best used to invoke interest while your visitor is reading "
141
+ "your content. Users perceive it as something new, important and urgent and "
142
+ "are highly likely to click on it."
143
+ msgstr ""
144
+ "Ein Messenger wird am besten verwendet um Interesse zu erzeugen, während die "
145
+ "Besucher dabei sind den Inhalt der Seite zu lesen. Benutzer sehen es als "
146
+ "etwas Neues, wichtiges und dringendes und mit hoher Wahrscheinlichkeit "
147
+ "werden Sie darauf klicken."
148
+
149
+ #: .././about-icegram.php:219
150
+ msgid "Toast Notification"
151
+ msgstr "Toast Benachrichtigung"
152
+
153
+ #: .././about-icegram.php:221
154
+ msgid ""
155
+ "Want to alert your visitor about some news, an update from your blog, a "
156
+ "social proof or an offer? Use Icegram’s unique toast notification, it will "
157
+ "catch their attention, let them click on the message, and disappear after a "
158
+ "while."
159
+ msgstr ""
160
+ "Möchten Sie Ihre Besucher benachrichtigen über neue News, ein Update von "
161
+ "Ihrem Blog, einen sozialen Beweis oder ein Angebot aufmerksam machen? "
162
+ "Verwenden Icegram einzigartige Toast Benachrichtigung sie wird ihre "
163
+ "Aufmerksamkeit erregen, lassen Sie sie auf die Nachricht klicken, und nach "
164
+ "einer Weile verschwinden."
165
+
166
+ #: .././about-icegram.php:222
167
+ msgid "Popup"
168
+ msgstr "Popup"
169
+
170
+ #: .././about-icegram.php:224
171
+ msgid ""
172
+ "Lightbox popup windows are most widely used for lead capture, promotions and "
173
+ "additional content display. Ask visitors to sign up to your newsletter, or "
174
+ "like you on social networks, or tell them about a special offer..."
175
+ msgstr ""
176
+ "Lightbox Popup-Fenster werden am häufigsten für die Lead-Erfassung, Aktionen "
177
+ "und zusätzliche Inhalte verwendet. Forden Sie den Besucher auf Ihrem "
178
+ "Newsletter zu unterzeichnen, oder wie Sie in sozialen Netzwerken reden, oder "
179
+ "was Sie über ein spezielles Angebot zu ihnen sagen..."
180
+
181
+ #: .././about-icegram.php:234 .././icegram.php:977 .././icegram.php:983
182
+ msgid "Campaigns"
183
+ msgstr "Kampagnen"
184
+
185
+ #: .././about-icegram.php:235
186
+ msgid "Campaign = Messages + Rules"
187
+ msgstr "Kampagne = Nachricht + Regeln"
188
+
189
+ #: .././about-icegram.php:236
190
+ msgid ""
191
+ "A campaign allows sequencing multiple messages and defining targeting rules. "
192
+ "Create different campaigns for different marketing goals. Icegram supports "
193
+ "showing multiple campaigns on any page."
194
+ msgstr ""
195
+ "Eine Kampagne ermöglicht die Sequenzierung mehrerer Nachrichten und "
196
+ "Definieren Targeting-Regeln. Erstellen Sie verschiedene Kampagnen für "
197
+ "verschiedene Marketingziele. Icegram unterstützt mehrere Kampagnen auf einer "
198
+ "beliebigen Seite."
199
+
200
+ #: .././about-icegram.php:237
201
+ msgid ""
202
+ "You can always preview your campaign to ensure campaign works the way you "
203
+ "want, before making it live."
204
+ msgstr ""
205
+ "Sie können jederzeit eine Vorschau Ihrer Kampagne machen, damit Sie "
206
+ "sicherstellen wie diese aussieht."
207
+
208
+ #: .././about-icegram.php:241
209
+ msgid "Multiple Messages & Sequencing"
210
+ msgstr "Mehrere Nachrichten & Sequenzierung"
211
+
212
+ #: .././about-icegram.php:243
213
+ msgid ""
214
+ "Add one or as many messages to a campaign as you want. Also choose the "
215
+ "number of seconds after which each message should show up. Showing multiple "
216
+ "messages for same goal, but with slightly different content / presentation, "
217
+ "greatly improves conversions."
218
+ msgstr ""
219
+ "Fügen Sie eine oder mehrere Nachrichten zu einer Kampagne, ganz wie Sie "
220
+ "wollen. Wählen Sie auch die Anzahl der Sekunden, nach der jede Nachricht "
221
+ "erscheinen soll. Mehrere Nachrichten zum gleichen Ziel, aber mit etwas "
222
+ "anderen Inhalt / Gestaltung verbessert die Conversions-Rate."
223
+
224
+ #: .././about-icegram.php:247 .././classes/class-icegram-campaign-admin.php:49
225
+ msgid "Targeting Rules"
226
+ msgstr "Ziel Regeln"
227
+
228
+ #: .././about-icegram.php:249
229
+ msgid ""
230
+ "You can control who sees a campaign – and on what device, which pages does "
231
+ "it show on, and what time period will it stay active for. You can run "
232
+ "different campaigns with different rules to maximize engagement."
233
+ msgstr ""
234
+ "Sie können steuern, wer eine Kampagne sieht, auf welchem Gerät, auf welchen "
235
+ "Seiten sie zu zeigen ist, und für was für einen Zeitraum sie aktiv bleiben. "
236
+ "Sie können verschiedene Kampagnen mit unterschiedlichen Regeln ausführen um "
237
+ "das Engagement zu maximieren."
238
+
239
+ #: .././about-icegram.php:259
240
+ msgid "FAQ / Common Problems"
241
+ msgstr "FAQ / Häufige Probleme"
242
+
243
+ #: .././about-icegram.php:261
244
+ msgid "Messages look broken / formatting is weird..."
245
+ msgstr "Nachrichten sehen defekt aus / Formatierung ist seltsam ..."
246
+
247
+ #: .././about-icegram.php:262
248
+ msgid ""
249
+ "This is most likely due to CSS conflicts with current theme. We suggest "
250
+ "using simple formatting for messages. You can also write custom CSS in your "
251
+ "theme to fix any problems."
252
+ msgstr ""
253
+ "Dies sind wahrscheinlich CSS Konflikte mit dem aktuellen Theme . Wir "
254
+ "schlagen einfachen Formatierungen für Nachrichten vor. Sie können auch "
255
+ "benutzerdefinierte CSS in Ihrem Theme schreiben um Probleme zu beheben."
256
+
257
+ #: .././about-icegram.php:264
258
+ msgid "Extra Line Breaks / Paragraphs in messages..."
259
+ msgstr "Zusätzliche Zeilenumbrüche / Absätze in Nachrichten..."
260
+
261
+ #: .././about-icegram.php:265
262
+ msgid ""
263
+ "Go to HTML mode in content editor and pull your custom HTML code all "
264
+ "together in one line. Don't leave blank lines between two tags. That should "
265
+ "fix it."
266
+ msgstr ""
267
+ "Gehen Sie zum HTML-Modus in Content-Editor, und ziehen Sie Ihre "
268
+ "benutzerdefinierte HTML Code zusammen in eine Zeile. Keine Leerzeilen "
269
+ "zwischen zwei Tag lassen. Das sollte es beheben."
270
+
271
+ #: .././about-icegram.php:267
272
+ msgid "How do I add custom CSS for messages?"
273
+ msgstr "Wie kann ich benutzerdefinierte CSS für Nachrichten hinzufügen?"
274
+
275
+ #: .././about-icegram.php:268
276
+ msgid ""
277
+ "You can use custom CSS/JS inline in your message HTML. You can also use your "
278
+ "theme's custom JS / CSS feature to add your changes."
279
+ msgstr ""
280
+ "Sie können benutzerdefinierte CSS / JS inline in Ihrem Beitrag HTML "
281
+ "verwenden. Sie können auch benutzerdefinierte JS / CSS-Funktion Ihres Theme "
282
+ "verwenden um Änderungen hinzuzufügen."
283
+
284
+ #: .././about-icegram.php:270
285
+ msgid "Optin Forms / Mailing service integration..."
286
+ msgstr "Optin Formulare / Mailing Service-Integration..."
287
+
288
+ # ?
289
+ #: .././about-icegram.php:271
290
+ msgid ""
291
+ "You can embed any optin / subscription form to your Icegram messages using "
292
+ "'Embed Form' button above text editor. Paste in form HTML code and let "
293
+ "Icegram clean it up! You may even use a shortcode if you are using a WP "
294
+ "plugin from your newsletter / lead capture service."
295
+ msgstr ""
296
+ "Sie können beliebige optin / Anmeldeformulare, Icegram Nachrichten mit "
297
+ "'Embed Formular \" mit dem Button oben im Texteditor einbetten. Einfügen in "
298
+ "Form HTML Code und dann lassen Icegram aufräumen! Sie können sogar mit einem "
299
+ "Shortcode, wenn Sie mit einer WP Plugin von Ihrem Newsletter / Lead Capture "
300
+ "Service arbeiten verwenden."
301
+
302
+ #: .././about-icegram.php:273
303
+ msgid "How many messages should I show on a page?"
304
+ msgstr "Wie viele Nachrichten sollte ich auf eine Seite zu zeigen?"
305
+
306
+ #: .././about-icegram.php:274
307
+ msgid ""
308
+ "While Icegram provides you lots of different message types and ability to "
309
+ "add multiple messages to a campaign, we discourage you to go overboard. "
310
+ "We've observed two messages on a page work well, but YMMV!"
311
+ msgstr ""
312
+ "Icegram bietet Ihnen viele verschiedene Nachrichtentypen und die Fähigkeit, "
313
+ "mehrere Nachrichten zu einer Kampagne hinzuzufügen, aber mit zu vielen "
314
+ "werden über Sie Bord gehen. Wir haben zwei Nachrichten auf einer Seite "
315
+ "beobachtet was sich als gut erwiesen hat."
316
+
317
+ #: .././about-icegram.php:280
318
+ msgid "Preview does not work / not refreshing..."
319
+ msgstr "Vorschau funktioniert nicht / nicht aktualisiert..."
320
+
321
+ #: .././about-icegram.php:281
322
+ msgid ""
323
+ "Doing a browser refresh while previewing will not show your most recent "
324
+ "changes. Click 'Preview' button to see a preview with your latest changes."
325
+ msgstr ""
326
+ "Machen Sie eine Aktualisierung des Browsers wenn die Vorschau Ihre letzten "
327
+ "Änderungen nicht zeigt. Klicken Sie auf 'Vorschau', um eine Vorschau mit der "
328
+ "neuesten Änderungen zu sehen."
329
+
330
+ #: .././about-icegram.php:283
331
+ msgid "Can I use shortcodes in a message?"
332
+ msgstr "Kann ich Shortcodes in einer Nachricht verwenden?"
333
+
334
+ #: .././about-icegram.php:284
335
+ msgid ""
336
+ "Yes! Messages support shortcodes. You may need to adjust CSS so the "
337
+ "shortcode output looks good in your message."
338
+ msgstr ""
339
+ "Ja! Mitteilungen unterstützen Shortcodes. Möglicherweise müssen Sie die CSS "
340
+ "anpassen, so dass die Shortcode- Ausgabe gut in Ihrer Nachricht aussieht."
341
+
342
+ #: .././about-icegram.php:286
343
+ msgid "WPML / Multilingual usage..."
344
+ msgstr "WPML / Mehrsprachige Nutzung..."
345
+
346
+ #: .././about-icegram.php:287
347
+ msgid ""
348
+ "Go to <code>Messages</code> from Icegram menu. Edit a message and translate "
349
+ "it like any other post. Icegram will show translated message where possible. "
350
+ "Choose <code>All posts</code> under WPML Language setting - Blog Posts to "
351
+ "display, to fall back to default language messages."
352
+ msgstr ""
353
+ "Gehen Sie zu <code>Nachrichten</code> aus Icegram Menü. Bearbeiten Sie eine "
354
+ "Nachricht und übersetzen sie sie wie jede andere Nachricht. Icegram wird die "
355
+ "Nachricht wenn möglich übersetzen. Wählen Sie <code>Alle Einträge </code> "
356
+ "unter WPML Spracheinstellung - Blogeinträge damit diese angezeigt werden um "
357
+ "auf die Standardsprach Meldungen zurückgreifen."
358
+
359
+ #: .././about-icegram.php:291
360
+ msgid "I can't find a way to do X..."
361
+ msgstr "Ich kann keinen Weg zu X finden..."
362
+
363
+ #: .././about-icegram.php:292
364
+ msgid ""
365
+ "Icegram is actively developed. If you can't find your favorite feature (or "
366
+ "have a suggestion) contact us. We'd love to hear from you."
367
+ msgstr ""
368
+ "Icegram wird aktiv entwickelt. Wenn Sie Ihre Lieblings-Feature nicht finden "
369
+ "können (oder einen Vorschlag haben) kontaktieren Sie uns. Wir würden uns "
370
+ "freuen von Ihnen zu hören."
371
+
372
+ #: .././about-icegram.php:294
373
+ msgid "I'm facing a problem and can't find a way out..."
374
+ msgstr "Ich bin vor einem Problem und kann keinen Ausweg finden .."
375
+
376
+ #: .././about-icegram.php:295
377
+ msgid ""
378
+ ", provide as much detail of the problem as you can. We will try to solve the "
379
+ "problem ASAP."
380
+ msgstr ""
381
+ ", beschreiben Sie so viele Details des Problems wie möglich. Wir werden "
382
+ "versuchen, das Problem so schnell wie möglich zu lösen."
383
+
384
+ #: .././icegram.php:157
385
+ msgid "Free Add-ons, Proven Marketing Tricks and Updates"
386
+ msgstr "Kostenlose Add-ons, bewährte Marketing-Tricks und Updates"
387
+
388
+ #: .././icegram.php:162
389
+ msgid "Get add-ons and tips..."
390
+ msgstr "Holen Sie sich Add-ons und Tipps..."
391
+
392
+ #: .././icegram.php:253
393
+ msgid "Housekeeping"
394
+ msgstr "Haushaltung"
395
+
396
+ #: .././icegram.php:257
397
+ msgid "Remove all Icegram shortcodes"
398
+ msgstr "Entferne alle Icegram Shortcodes"
399
+
400
+ #: .././icegram.php:262
401
+ msgid "Remove all Icegram campaigns and messages"
402
+ msgstr "Entferne alle Icegram Kampagnen und Nachrichten"
403
+
404
+ #: .././icegram.php:266
405
+ msgid "Clean Up"
406
+ msgstr "Reinigen"
407
+
408
+ #: .././icegram.php:275
409
+ msgid ""
410
+ "You won't be able to recover this data once you proceed. Do you really want "
411
+ "to perform this action?"
412
+ msgstr ""
413
+ "Wenn Sie hier fortfahren werden Sie nicht in der Lage sein, diese Daten "
414
+ "wiederherzustellen. Wollen Sie wirklich diese Aktion durchführen?"
415
+
416
+ #: .././icegram.php:289
417
+ msgid "Done!"
418
+ msgstr "Fertig!"
419
+
420
+ #: .././icegram.php:418
421
+ msgid "Settings"
422
+ msgstr "Einstellungen"
423
+
424
+ #: .././icegram.php:419
425
+ msgid "Add-ons"
426
+ msgstr "Add-ons"
427
+
428
+ #: .././icegram.php:432
429
+ msgid "Docs & Support"
430
+ msgstr "Dokumente & Support"
431
+
432
+ #: .././icegram.php:621
433
+ msgid "Powered by Icegram"
434
+ msgstr "Powered by Icegram"
435
+
436
+ #: .././icegram.php:978
437
+ msgid "Campaign"
438
+ msgstr "Kampagne"
439
+
440
+ #: .././icegram.php:979 .././icegram.php:980
441
+ msgid "Add New Campaign"
442
+ msgstr "Kampagne hinzufügen"
443
+
444
+ #: .././icegram.php:981
445
+ msgid "Edit Campaign"
446
+ msgstr "Kampagne ändern"
447
+
448
+ #: .././icegram.php:982
449
+ msgid "New Campaign"
450
+ msgstr "Neue Kampagne"
451
+
452
+ #: .././icegram.php:984
453
+ msgid "View Campaign"
454
+ msgstr "Kampagne anzeigen"
455
+
456
+ #: .././icegram.php:985
457
+ msgid "Search Campaigns"
458
+ msgstr "Kampagne suchen"
459
+
460
+ #: .././icegram.php:986
461
+ msgid "No campaigns found"
462
+ msgstr "Keine Kampagne gefunden"
463
+
464
+ #: .././icegram.php:987
465
+ msgid "No campaigns found in Trash"
466
+ msgstr "Keine Kampagnen im Papierkorb gefunden"
467
+
468
+ #: .././icegram.php:989
469
+ msgid "Icegram"
470
+ msgstr "Icegram"
471
+
472
+ #: .././icegram.php:1016
473
+ msgid "Create New"
474
+ msgstr "Neue"
475
+
476
+ #: .././icegram.php:1017
477
+ msgid "Create New Message"
478
+ msgstr "Neue Nachricht anlegen"
479
+
480
+ #: .././icegram.php:1018 .././classes/class-icegram-campaign-admin.php:103
481
+ #: .././classes/class-icegram-campaign-admin.php:502
482
+ msgid "Edit Message"
483
+ msgstr "Nachricht ändern"
484
+
485
+ #: .././icegram.php:1019
486
+ msgid "New Message"
487
+ msgstr "Neue Nachricht"
488
+
489
+ #: .././icegram.php:1021
490
+ msgid "View Message"
491
+ msgstr "Nachricht anzeigen"
492
+
493
+ #: .././icegram.php:1022
494
+ msgid "Search Messages"
495
+ msgstr "Nachricht suchen"
496
+
497
+ #: .././icegram.php:1023
498
+ msgid "No messages found"
499
+ msgstr "Keine Nachricht gefunden"
500
+
501
+ #: .././icegram.php:1024
502
+ msgid "No messages found in Trash"
503
+ msgstr "Keine Nachricht im Papierkorp gefunden"
504
+
505
+ #: .././icegram.php:1422
506
+ msgid "Copy"
507
+ msgstr "Kopieren"
508
+
509
+ #: .././settings.php:19
510
+ msgid "Icegram Settings"
511
+ msgstr "Icegram Einstellungen"
512
+
513
+ #: .././settings.php:23
514
+ msgid "Share Icegram"
515
+ msgstr "Teile Icegram"
516
+
517
+ #: .././settings.php:27
518
+ msgid "Show \"Powered by\" link"
519
+ msgstr "Zeige \"Powered by\" Link"
520
+
521
+ #: .././settings.php:32
522
+ msgid "Cache Friendly?"
523
+ msgstr "Cache freundlich?"
524
+
525
+ #: .././settings.php:36
526
+ msgid ""
527
+ "Turn on \"Lazy Load\" - load Icegram scripts and messages after page load to "
528
+ "avoid caching problems."
529
+ msgstr ""
530
+ "Schalten Sie \"Lazy Load\" - Icegram Skripte und Nachrichten nach dem Laden "
531
+ "der Seite um Caching Probleme zu vermeiden."
532
+
533
+ #: .././addons.php:13
534
+ msgid "Icegram Add-ons"
535
+ msgstr "Icegram Add-ons"
536
+
537
+ #: .././addons.php:47
538
+ msgid "Sorry! No Add-ons available currently."
539
+ msgstr "Es tut uns leid! Derzeit keine verfügbaren Add-ons."
540
+
541
+ #: .././classes/class-icegram-message-admin.php:41
542
+ msgid "Message Settings"
543
+ msgstr "Nachrichten Einstellungen"
544
+
545
+ #: .././classes/class-icegram-message-admin.php:113
546
+ #: .././classes/class-icegram-message-admin.php:520
547
+ #: .././classes/class-icegram-campaign-admin.php:452
548
+ msgid "Type"
549
+ msgstr "Type"
550
+
551
+ #: .././classes/class-icegram-message-admin.php:129
552
+ #: .././classes/class-icegram-message-admin.php:521
553
+ msgid "Theme"
554
+ msgstr "Theme"
555
+
556
+ #: .././classes/class-icegram-message-admin.php:146
557
+ msgid "Animation"
558
+ msgstr "Animation"
559
+
560
+ #: .././classes/class-icegram-message-admin.php:161
561
+ msgid "Headline"
562
+ msgstr "Headline"
563
+
564
+ #: .././classes/class-icegram-message-admin.php:162
565
+ msgid ""
566
+ "Shown with highest prominence. Click on idea button on right to get a new "
567
+ "headline."
568
+ msgstr ""
569
+ "Dargestellt mit höchster Prominenz. Klicken Sie auf die Idee Taste auf "
570
+ "Recht, eine neue Schlagzeile zu bekommen."
571
+
572
+ #: .././classes/class-icegram-message-admin.php:168
573
+ msgid "Give Me Another Headline"
574
+ msgstr "Gib mir noch eine Überschrift"
575
+
576
+ #: .././classes/class-icegram-message-admin.php:174
577
+ msgid "Icon / Avatar Image"
578
+ msgstr "Symbol / Profilbild"
579
+
580
+ #: .././classes/class-icegram-message-admin.php:175
581
+ msgid "This image will appear in message content."
582
+ msgstr "Dieses Bild wird im Nachrichteninhalt angezeigt."
583
+
584
+ #: .././classes/class-icegram-message-admin.php:178
585
+ msgid "Upload / Select an image"
586
+ msgstr "Upload / Wählen Sie ein Bild"
587
+
588
+ #: .././classes/class-icegram-message-admin.php:178
589
+ msgid "Upload / Select Image"
590
+ msgstr "Upload / Bild auswählen"
591
+
592
+ #: .././classes/class-icegram-message-admin.php:194
593
+ msgid "Message Body"
594
+ msgstr "Body Nachricht"
595
+
596
+ #: .././classes/class-icegram-message-admin.php:225
597
+ msgid "Form"
598
+ msgstr "Form"
599
+
600
+ #: .././classes/class-icegram-message-admin.php:226
601
+ msgid "Use Opt-in / Subscription / Lead capture form"
602
+ msgstr "Verwenden Sie Opt-in / Abonnement / Lead Capture-Form"
603
+
604
+ #: .././classes/class-icegram-message-admin.php:251
605
+ #: .././classes/class-icegram-message-admin.php:253
606
+ msgid "Left"
607
+ msgstr "Links"
608
+
609
+ #: .././classes/class-icegram-message-admin.php:258
610
+ #: .././classes/class-icegram-message-admin.php:260
611
+ msgid "Right"
612
+ msgstr "Rechts"
613
+
614
+ #: .././classes/class-icegram-message-admin.php:265
615
+ #: .././classes/class-icegram-message-admin.php:267
616
+ msgid "Bottom"
617
+ msgstr "Unten"
618
+
619
+ #: .././classes/class-icegram-message-admin.php:282
620
+ #: .././classes/class-icegram-message-admin.php:284
621
+ msgid "Inline"
622
+ msgstr "In Zeile"
623
+
624
+ #: .././classes/class-icegram-message-admin.php:296
625
+ msgid "Background Color"
626
+ msgstr "Hintergrundfarbe"
627
+
628
+ #: .././classes/class-icegram-message-admin.php:297
629
+ msgid "Text Color"
630
+ msgstr "Textfarbe"
631
+
632
+ #: .././classes/class-icegram-message-admin.php:308
633
+ msgid "Text / HTML to show before the form"
634
+ msgstr "Text / HTML vor dem Formular zeigen"
635
+
636
+ #: .././classes/class-icegram-message-admin.php:312
637
+ msgid "Form Embed Code"
638
+ msgstr "Form Embed Code"
639
+
640
+ #: .././classes/class-icegram-message-admin.php:314
641
+ msgid "Paste HTML / shortcode of your form here..."
642
+ msgstr "Fügen Sie HTML / Shortcode in das Formular ein..."
643
+
644
+ # ?
645
+ #: .././classes/class-icegram-message-admin.php:318
646
+ msgid "Show labels above fields"
647
+ msgstr "Zeige die Beschriftung über den Feldern"
648
+
649
+ #: .././classes/class-icegram-message-admin.php:325
650
+ msgid "Text / HTML to show after the form"
651
+ msgstr "Text / HTML nach dem Formular zeigen"
652
+
653
+ #: .././classes/class-icegram-message-admin.php:329
654
+ msgid ""
655
+ "Insert <code>[ig_form]</code> where you want to show this form in message "
656
+ "body."
657
+ msgstr ""
658
+ "Fügen Sie <code>[ig_form] </code> in das Formular in dem der "
659
+ "Nachrichtentext angezeigt werden sollen ein."
660
+
661
+ #: .././classes/class-icegram-message-admin.php:336
662
+ msgid "Button Label"
663
+ msgstr "Button Beschriftung"
664
+
665
+ #: .././classes/class-icegram-message-admin.php:337
666
+ msgid "Your call to action text. Something unusual will increase conversions."
667
+ msgstr "Ihr CTA Text. Etwas ungewöhnliches wird Conversion steigern."
668
+
669
+ #: .././classes/class-icegram-message-admin.php:347
670
+ msgid "Target Link"
671
+ msgstr "Ziel Link"
672
+
673
+ #: .././classes/class-icegram-message-admin.php:348
674
+ msgid "Enter destination URL here. Clicking will redirect to this link."
675
+ msgstr ""
676
+ "Geben Sie hier die Ziel-URL ein. Ein Klick leitet Sieauf diesen Link weiter."
677
+
678
+ #: .././classes/class-icegram-message-admin.php:371
679
+ msgid "Body"
680
+ msgstr "Body"
681
+
682
+ #: .././classes/class-icegram-message-admin.php:372
683
+ #: .././classes/class-icegram-message-admin.php:378
684
+ msgid "Background"
685
+ msgstr "Hintergrund"
686
+
687
+ #: .././classes/class-icegram-message-admin.php:373
688
+ #: .././classes/class-icegram-message-admin.php:379
689
+ msgid "Text"
690
+ msgstr "Text"
691
+
692
+ #: .././classes/class-icegram-message-admin.php:377
693
+ msgid "Button"
694
+ msgstr "Button"
695
+
696
+ #: .././classes/class-icegram-message-admin.php:384
697
+ msgid "Colors"
698
+ msgstr "Farben"
699
+
700
+ #: .././classes/class-icegram-message-admin.php:385
701
+ msgid "Use theme's default colors"
702
+ msgstr "Verwenden Sie die Standardfarben Theme"
703
+
704
+ #: .././classes/class-icegram-message-admin.php:391
705
+ msgid "Position"
706
+ msgstr "Position"
707
+
708
+ #: .././classes/class-icegram-message-admin.php:450
709
+ #, php-format
710
+ msgid "You may add <code>[%s]</code> where you want to show this message."
711
+ msgstr ""
712
+ "Sie können <code>[% s]</code> einfügen wo diese Nachricht angezeigt werden "
713
+ "soll."
714
+
715
+ #: .././classes/class-icegram-message-admin.php:522
716
+ msgid "Thumbnail"
717
+ msgstr "Thumbnail"
718
+
719
+ #: .././classes/class-icegram-message-admin.php:664
720
+ msgid "Here Is A Method That Is Helping ____ To ____"
721
+ msgstr "Hier ist eine Methode die hilft ____ um ____"
722
+
723
+ #: .././classes/class-icegram-message-admin.php:665
724
+ msgid "__ Little Known Ways To ____"
725
+ msgstr "__ wenig bekannte Wege um ____"
726
+
727
+ #: .././classes/class-icegram-message-admin.php:666
728
+ msgid "Get Rid Of ____ Once And For All"
729
+ msgstr "Beseitige ____ ein für alle Mal"
730
+
731
+ #: .././classes/class-icegram-message-admin.php:667
732
+ msgid "How To ____ So You Can ____"
733
+ msgstr "Wie man ____ Sie können ____"
734
+
735
+ #: .././classes/class-icegram-message-admin.php:668
736
+ msgid "They Didn't Think I Could ____, But I Did"
737
+ msgstr "Sie wussten nicht, dass ich ____, aber ich habe"
738
+
739
+ #: .././classes/class-icegram-message-admin.php:669
740
+ msgid "How ____ Made Me ____"
741
+ msgstr "Wie ____ machte ich mich ____"
742
+
743
+ #: .././classes/class-icegram-message-admin.php:670
744
+ msgid "Are You ____ ?"
745
+ msgstr "Bist du ____ ?"
746
+
747
+ #: .././classes/class-icegram-message-admin.php:671
748
+ msgid "Warning: ____ !"
749
+ msgstr "Warnung: ____ !"
750
+
751
+ #: .././classes/class-icegram-message-admin.php:672
752
+ msgid "Do You Make These Mistakes With ____ ?"
753
+ msgstr "Machst du diese Fehler mit ____?"
754
+
755
+ #: .././classes/class-icegram-message-admin.php:673
756
+ msgid "7 Ways To ____"
757
+ msgstr "7 Wege zum ____"
758
+
759
+ #: .././classes/class-icegram-message-admin.php:674
760
+ msgid "If You're ____, You Can ____"
761
+ msgstr "Wenn Sie ____, können Sie ____"
762
+
763
+ #: .././classes/class-icegram-message-admin.php:675
764
+ msgid "Turn your ____ into a ____"
765
+ msgstr "Verwandeln Sie Ihren ____ in ____ ein"
766
+
767
+ #: .././classes/class-icegram-message-admin.php:676
768
+ msgid "Want To Be A ____?"
769
+ msgstr "Möchten Sie ein ____?"
770
+
771
+ #: .././classes/class-icegram-message-admin.php:677
772
+ msgid "The Ugly Truth About Your Beautiful ____"
773
+ msgstr "Die nackte Wahrheit über Ihre Schöne ____"
774
+
775
+ #: .././classes/class-icegram-message-admin.php:678
776
+ msgid "The Secret to ____ Is Simply ____!"
777
+ msgstr "Das Geheimnis für ____ ist einfach ____!"
778
+
779
+ #: .././classes/class-icegram-message-admin.php:679
780
+ msgid "The Quickest Way I Know To ____"
781
+ msgstr "Der schnellste Weg den ixh weiß um ____"
782
+
783
+ # La traduzione letterale non rendeva in italiano. Creato un titolo diverso.
784
+ #: .././classes/class-icegram-message-admin.php:680
785
+ msgid "The Lazy Man's Way To ____"
786
+ msgstr "Die Faule Weg um ____"
787
+
788
+ # La traduzione in italiano non rende. Suggerimenti?
789
+ #: .././classes/class-icegram-message-admin.php:681
790
+ msgid ""
791
+ "The Amazing Story Of ____ That Requires So Little Of ____ You Could ____"
792
+ msgstr ""
793
+ "Die erstaunliche Geschichte ____ Das ist so wenig benötigen von ____ Sie "
794
+ "könnten ____ "
795
+
796
+ # La traduzione in italiano non rende. Suggerimenti?
797
+ #: .././classes/class-icegram-message-admin.php:682
798
+ msgid "The Amazing Secret Of The ____ Genius Who Is Afraid Of ____"
799
+ msgstr "Das erstaunliche Geheimnis der ____ Genius Wer hat Angst vor ____"
800
+
801
+ #: .././classes/class-icegram-message-admin.php:683
802
+ msgid "The 10 Wackiest Ideas That ____... And How You Can Too!"
803
+ msgstr "Die 10 verrücktesten Ideen Das ____... Und wie kannst du das auch!"
804
+
805
+ # La traduzione in italiano non rende. Ho creato un altro titolo. Altri suggerimenti?
806
+ #: .././classes/class-icegram-message-admin.php:684
807
+ msgid "The Inside Secrets To ____ With Crazy, Outlandish And Outrageous ____"
808
+ msgstr ""
809
+ "Die innere Geheimnisse zu ____ Mit verrückt, ausgefallen und empörend ____"
810
+
811
+ #: .././classes/class-icegram-message-admin.php:685
812
+ msgid "____ Like A ____"
813
+ msgstr "____ gleich wie ____"
814
+
815
+ #: .././classes/class-icegram-message-admin.php:686
816
+ msgid "Remember When You Could Have ____, And You Didn't?"
817
+ msgstr "Denken Sie daran, wenn Sie hätten ____, Und ihr habt nicht?"
818
+
819
+ # La trsduzione letterale non rendeva in italiano. Creata nuova frase.
820
+ #: .././classes/class-icegram-message-admin.php:687
821
+ msgid "Is The ____ Worth $x To You?"
822
+ msgstr "Ist ____ im Wert von $x für Sie?"
823
+
824
+ #: .././classes/class-icegram-message-admin.php:688
825
+ msgid "Increase your ____, reduce ____, maintain ____ and ____ with ____"
826
+ msgstr ""
827
+ "Steigern Sie Ihren ____, ____ reduzieren Sie, halten ____ und ____ mit ____"
828
+
829
+ #: .././classes/class-icegram-message-admin.php:689
830
+ msgid "If You Can ____ You Can ____"
831
+ msgstr "Wenn Sie können ____ Sie können ____"
832
+
833
+ #: .././classes/class-icegram-message-admin.php:690
834
+ msgid "I Discovered How To ____... Now I'm Revealing My Secret"
835
+ msgstr "Ich entdeckte, wie man ____... Ich enthülle meine Geheimnisse"
836
+
837
+ #: .././classes/class-icegram-message-admin.php:691
838
+ msgid "How To Turn Your ____ Into The Most ____"
839
+ msgstr "Wie man ____ wandelt ____ in die meist ____"
840
+
841
+ # La traduzione letterale non rendeva in italiano. Creata nuova frase.
842
+ #
843
+ #
844
+ #: .././classes/class-icegram-message-admin.php:692
845
+ msgid "How To Take The Headache Out Of ____"
846
+ msgstr "Wie man den Kopfschmerz aus ____"
847
+
848
+ #: .././classes/class-icegram-message-admin.php:693
849
+ msgid "How To ____ ... Legally"
850
+ msgstr "Wie man ____ ... Rechtlich"
851
+
852
+ #: .././classes/class-icegram-message-admin.php:694
853
+ msgid "How To ____ That ____"
854
+ msgstr "Wie man das ____"
855
+
856
+ #: .././classes/class-icegram-message-admin.php:695
857
+ msgid "How To Discover The ____ That Lies Hidden In Your ____"
858
+ msgstr "Wie Sie entdecken ____ Das liegt versteckt in ihrer ____"
859
+
860
+ #: .././classes/class-icegram-message-admin.php:696
861
+ msgid "How To ____ Even When Your Not ____"
862
+ msgstr "Wie man ____ auch wenn Sie nicht ____"
863
+
864
+ #: .././classes/class-icegram-message-admin.php:697
865
+ msgid "____ With No ____!"
866
+ msgstr "____ Ohne ____!"
867
+
868
+ #: .././classes/class-icegram-message-admin.php:698
869
+ msgid "Greatest Goldmine of ____ Ever Jammed Into One Big ____"
870
+ msgstr "Größten Goldminen von ____ Blockierte immer in eine große ____"
871
+
872
+ #: .././classes/class-icegram-message-admin.php:699
873
+ msgid "Free ____ Tells How To Get Better ____"
874
+ msgstr "Kostenlose ____ erklärt, wie man besser ____"
875
+
876
+ #: .././classes/class-icegram-message-admin.php:700
877
+ msgid ""
878
+ "FREE ____ Worth $____ for the first 100 People to take Advantage of this "
879
+ "Offer"
880
+ msgstr ""
881
+ "Kostenlose ____ im Wert von $____ für die ersten 100 Leute, um von diesem "
882
+ "Angebot Gebrauch zu nehmen"
883
+
884
+ #: .././classes/class-icegram-message-admin.php:701
885
+ msgid "Don't Try This With Any Other ____"
886
+ msgstr "Versuchen nicht dieses mit jeder anderen ____"
887
+
888
+ #: .././classes/class-icegram-message-admin.php:702
889
+ msgid "Do You Honestly Want To ____?"
890
+ msgstr "Wollen Sie ehrlich ____?"
891
+
892
+ #: .././classes/class-icegram-message-admin.php:703
893
+ msgid "Discover The Magic ____ That Will Bring You ____ & ____!"
894
+ msgstr "Entdecken Sie den Zauber ____ Das bringt Sie ____ & ____!"
895
+
896
+ #: .././classes/class-icegram-message-admin.php:704
897
+ msgid "____ Man Reveals A Short-Cut To ____"
898
+ msgstr "____ Man zeigt einen Short-Cut zu ____"
899
+
900
+ #: .././classes/class-icegram-message-admin.php:705
901
+ msgid "Confessions Of A ____"
902
+ msgstr "Bekenntnis einer ____"
903
+
904
+ #: .././classes/class-icegram-message-admin.php:706
905
+ msgid "Are You Ready To ____?"
906
+ msgstr "Bist du bereit für ____?"
907
+
908
+ #: .././classes/class-icegram-message-admin.php:707
909
+ msgid "An Open Letter To Everyone Who ____ More Than ____ Per ____"
910
+ msgstr "Ein offener Brief an alle, die mehr als ____ per"
911
+
912
+ #: .././classes/class-icegram-message-admin.php:708
913
+ msgid "An Amazing ____ You Can Carry In Your ____"
914
+ msgstr "Ein erstaunliches ____ können Sie ____ tragen"
915
+
916
+ #: .././classes/class-icegram-message-admin.php:709
917
+ msgid "21 Secret ____ that will ____... NOW!"
918
+ msgstr "21 Geheimnise ____ die JETZT ____... werden!"
919
+
920
+ #: .././classes/class-icegram-message-admin.php:716
921
+ #: .././classes/class-icegram-campaign-admin.php:661
922
+ msgid "Duplicate"
923
+ msgstr "Duplikat"
924
+
925
+ #: .././classes/class-icegram-campaign-admin.php:56
926
+ msgid "Search to add / Create new&hellip;"
927
+ msgstr "Suche hinzufügen / Neues&hellip;"
928
+
929
+ #: .././classes/class-icegram-campaign-admin.php:59
930
+ #: .././classes/class-icegram-campaign-admin.php:439
931
+ msgid "Create new"
932
+ msgstr "Neue"
933
+
934
+ #: .././classes/class-icegram-campaign-admin.php:62
935
+ msgid "Preview"
936
+ msgstr "Vorschau"
937
+
938
+ #: .././classes/class-icegram-campaign-admin.php:95
939
+ #: .././classes/class-icegram-campaign-admin.php:495
940
+ msgid "Give this message a name for your own reference"
941
+ msgstr "Geben Sie diese Nachricht einen Namen für die eigene Referenz"
942
+
943
+ #: .././classes/class-icegram-campaign-admin.php:100
944
+ #: .././classes/class-icegram-campaign-admin.php:499
945
+ msgid " sec"
946
+ msgstr "sec"
947
+
948
+ #: .././classes/class-icegram-campaign-admin.php:104
949
+ #: .././classes/class-icegram-campaign-admin.php:503
950
+ msgid "Remove from Campaign"
951
+ msgstr "Von Kampagne entfernen"
952
+
953
+ #: .././classes/class-icegram-campaign-admin.php:122
954
+ msgid ""
955
+ "No messages yet. Use search / create bar above to add messages to this "
956
+ "campaign."
957
+ msgstr ""
958
+ "Noch keine Nachrichten. Verwenden Sie Suche / erstelle eine Leiste über die "
959
+ "Nachrichten um diese Kampagne hinzuzufügen."
960
+
961
+ #: .././classes/class-icegram-campaign-admin.php:160
962
+ msgid "Where?"
963
+ msgstr "Wo?"
964
+
965
+ #: .././classes/class-icegram-campaign-admin.php:163
966
+ msgid "Sitewide"
967
+ msgstr "Seitenweit"
968
+
969
+ #: .././classes/class-icegram-campaign-admin.php:165
970
+ #, php-format
971
+ msgid ""
972
+ "Additionally you can insert <code>[%s]</code> wherever you want to run this "
973
+ "campaign."
974
+ msgstr ""
975
+ "Zusätzlich können Sie den <code>[% s]</code> einfügen, wo immer Sie diese "
976
+ "Kampagne ausgeführt werden soll."
977
+
978
+ #: .././classes/class-icegram-campaign-admin.php:172
979
+ msgid "Select pages to exclude&hellip;"
980
+ msgstr "Wählen Sie Seiten um diese auszuschliessen&hellip;"
981
+
982
+ #: .././classes/class-icegram-campaign-admin.php:187
983
+ msgid "Homepage"
984
+ msgstr "Homepage"
985
+
986
+ #: .././classes/class-icegram-campaign-admin.php:194
987
+ msgid "Selected pages"
988
+ msgstr "Ausgewählte Seiten"
989
+
990
+ #: .././classes/class-icegram-campaign-admin.php:200
991
+ msgid "Select a page&hellip;"
992
+ msgstr "Wählen Sie eine Seite&hellip;"
993
+
994
+ #: .././classes/class-icegram-campaign-admin.php:215
995
+ msgid "Specific URLs on this site"
996
+ msgstr "Bestimmte URLs auf dieser Seite"
997
+
998
+ #: .././classes/class-icegram-campaign-admin.php:231
999
+ msgid " Add another"
1000
+ msgstr "Neu hinzufügen"
1001
+
1002
+ #: .././classes/class-icegram-campaign-admin.php:241
1003
+ msgid "When?"
1004
+ msgstr "Wann?"
1005
+
1006
+ #: .././classes/class-icegram-campaign-admin.php:244
1007
+ msgid "Always"
1008
+ msgstr "Immer"
1009
+
1010
+ #: .././classes/class-icegram-campaign-admin.php:251
1011
+ msgid "Schedule"
1012
+ msgstr "Zeitplan"
1013
+
1014
+ #: .././classes/class-icegram-campaign-admin.php:254
1015
+ msgid "From&hellip;"
1016
+ msgstr "Von&hellip;"
1017
+
1018
+ #: .././classes/class-icegram-campaign-admin.php:257
1019
+ msgid "To&hellip;"
1020
+ msgstr "Bis&hellip;"
1021
+
1022
+ #: .././classes/class-icegram-campaign-admin.php:265
1023
+ msgid "Device?"
1024
+ msgstr "Gerät?"
1025
+
1026
+ #: .././classes/class-icegram-campaign-admin.php:266
1027
+ msgid "Mobile / Smartphones"
1028
+ msgstr "Mobile / Smartphones"
1029
+
1030
+ #: .././classes/class-icegram-campaign-admin.php:270
1031
+ msgid "Tablet"
1032
+ msgstr "Tablet"
1033
+
1034
+ #: .././classes/class-icegram-campaign-admin.php:274
1035
+ msgid "Desktop / Laptop"
1036
+ msgstr "Desktop /Laptop"
1037
+
1038
+ #: .././classes/class-icegram-campaign-admin.php:282
1039
+ msgid "Who?"
1040
+ msgstr "Wer?"
1041
+
1042
+ #: .././classes/class-icegram-campaign-admin.php:285
1043
+ msgid "All users"
1044
+ msgstr "Alle Nutzer"
1045
+
1046
+ #: .././classes/class-icegram-campaign-admin.php:292
1047
+ msgid "Logged in users only"
1048
+ msgstr "Nur angemeldete Benutzer"
1049
+
1050
+ #: .././classes/class-icegram-campaign-admin.php:311
1051
+ msgid "Select a user role&hellip;"
1052
+ msgstr "Wählen Sie eine Benutzerrolle&hellip;"
1053
+
1054
+ #: .././classes/class-icegram-campaign-admin.php:327
1055
+ msgid "Not Logged in users"
1056
+ msgstr "Nicht angemeldete Benutzer"
1057
+
1058
+ #: .././classes/class-icegram-campaign-admin.php:331
1059
+ #: .././classes/class-icegram-campaign-admin.php:341
1060
+ msgid "Current Session"
1061
+ msgstr "Akt. Sitzung"
1062
+
1063
+ #: .././classes/class-icegram-campaign-admin.php:332
1064
+ #: .././classes/class-icegram-campaign-admin.php:340
1065
+ msgid "Never"
1066
+ msgstr "Nie"
1067
+
1068
+ #: .././classes/class-icegram-campaign-admin.php:333
1069
+ #: .././classes/class-icegram-campaign-admin.php:342
1070
+ msgid "Today"
1071
+ msgstr "Heute"
1072
+
1073
+ #: .././classes/class-icegram-campaign-admin.php:334
1074
+ #: .././classes/class-icegram-campaign-admin.php:343
1075
+ msgid "One week"
1076
+ msgstr "1 Woche"
1077
+
1078
+ #: .././classes/class-icegram-campaign-admin.php:335
1079
+ #: .././classes/class-icegram-campaign-admin.php:344
1080
+ msgid "Two weeks"
1081
+ msgstr "2 Wochen"
1082
+
1083
+ #: .././classes/class-icegram-campaign-admin.php:336
1084
+ #: .././classes/class-icegram-campaign-admin.php:345
1085
+ msgid "One Month "
1086
+ msgstr "1 Monat"
1087
+
1088
+ #: .././classes/class-icegram-campaign-admin.php:337
1089
+ #: .././classes/class-icegram-campaign-admin.php:346
1090
+ msgid "Three Months "
1091
+ msgstr "3 Monate"
1092
+
1093
+ #: .././classes/class-icegram-campaign-admin.php:338
1094
+ #: .././classes/class-icegram-campaign-admin.php:347
1095
+ msgid "One year"
1096
+ msgstr "1 Jahr"
1097
+
1098
+ #: .././classes/class-icegram-campaign-admin.php:339
1099
+ #: .././classes/class-icegram-campaign-admin.php:348
1100
+ msgid "Two Years"
1101
+ msgstr "2 Jahre"
1102
+
1103
+ #: .././classes/class-icegram-campaign-admin.php:353
1104
+ msgid "Retargeting"
1105
+ msgstr "Retargeting"
1106
+
1107
+ #: .././classes/class-icegram-campaign-admin.php:356
1108
+ msgid "Once shown, do NOT show this campaign again for"
1109
+ msgstr "Sobald gezeigt, diese Kampagne nicht wieder zeigen für"
1110
+
1111
+ #: .././classes/class-icegram-campaign-admin.php:371
1112
+ msgid "Once CTA is clicked, do NOT show this campaign again for"
1113
+ msgstr "Sobald CTA geklickt wird, diese Kampa. nicht zeigen für"
1114
+
1115
+ #: .././classes/class-icegram-campaign-admin.php:435
1116
+ msgid "- - - - - - - - - - - - - - - - - - - - - - - - - -"
1117
+ msgstr "- - - - - - - - - - - - - - - - - - - - - - - - - -"
1118
+
1119
+ #: .././classes/class-icegram-campaign-admin.php:454
1120
+ msgid "Show after"
1121
+ msgstr "Zeige später"
1122
+
1123
+ #: .././classes/class-icegram-campaign-admin.php:455
1124
+ msgid "Actions"
1125
+ msgstr "Aktionen"
trunk/lang/icegram-it_IT.mo ADDED
Binary file
trunk/lang/icegram-it_IT.po ADDED
@@ -0,0 +1,1134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Icegram 1.1.1\n"
4
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/icegram\n"
5
+ "POT-Creation-Date: 2015-09-24 12:56+0100\n"
6
+ "PO-Revision-Date: 2015-09-24 12:57+0100\n"
7
+ "Last-Translator: Alessandro Massasso <alessandro.massasso@drivek.it>\n"
8
+ "Language-Team: Icegram Team <hello@icegram.com>\n"
9
+ "Language: Italian\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
16
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
17
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
18
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
19
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
20
+ "X-Poedit-Basepath: .\n"
21
+ "X-Generator: Poedit 1.5.4\n"
22
+ "X-Loco-Target-Locale: it_IT\n"
23
+ "X-Poedit-SearchPath-0: ../.\n"
24
+
25
+ #: .././about-icegram.php:128
26
+ #: .././classes/class-icegram-campaign-admin.php:453
27
+ msgid "Name"
28
+ msgstr "Nome"
29
+
30
+ #: .././about-icegram.php:132
31
+ msgid "E-mail"
32
+ msgstr "Email"
33
+
34
+ #: .././about-icegram.php:136
35
+ msgid "Subject"
36
+ msgstr "Oggetto"
37
+
38
+ #: .././about-icegram.php:140 .././icegram.php:1015
39
+ #: .././classes/class-icegram-campaign-admin.php:47
40
+ #: .././classes/class-icegram-campaign-admin.php:64
41
+ msgid "Message"
42
+ msgstr "Messaggio"
43
+
44
+ #: .././about-icegram.php:167 .././icegram.php:417
45
+ msgid "Welcome to Icegram"
46
+ msgstr "Benvenuto in Icegram"
47
+
48
+ #: .././about-icegram.php:169
49
+ msgid ""
50
+ "Your sample campaign is ready. We've added a few messages for you to test."
51
+ msgstr ""
52
+ "La tua campagna di prova è pronta. Abbiamo aggiunto dei messaggi in modo che "
53
+ "tu possa testarne il funzionamento."
54
+
55
+ #: .././about-icegram.php:177
56
+ msgid "Edit & Publish it"
57
+ msgstr "Imposta e Pubblica"
58
+
59
+ #: .././about-icegram.php:178
60
+ msgid "OR"
61
+ msgstr "oppure"
62
+
63
+ #: .././about-icegram.php:179
64
+ msgid "Preview Campaign"
65
+ msgstr "Anteprima campagna"
66
+
67
+ #: .././about-icegram.php:184
68
+ #, php-format
69
+ msgid "Version: %s"
70
+ msgstr "Versione: %s"
71
+
72
+ #: .././about-icegram.php:187
73
+ msgid "Questions? Need Help?"
74
+ msgstr "Domande? Hai bisogno di aiuto?"
75
+
76
+ #: .././about-icegram.php:188 .././about-icegram.php:295
77
+ msgid "Contact Us"
78
+ msgstr "Contattaci"
79
+
80
+ #: .././about-icegram.php:198
81
+ msgid ""
82
+ "Do read Icegram's core concepts below to understand how you can use Icegram "
83
+ "to inspire, convert and engage your audience."
84
+ msgstr ""
85
+ "Leggi le principali funzionalità di Icegram riportate qui sotto per capire "
86
+ "in che modo puoi utilizzare Icegram per attirare, convertire e coinvolgere "
87
+ "il tuo pubblico."
88
+
89
+ #: .././about-icegram.php:203 .././icegram.php:1014 .././icegram.php:1020
90
+ #: .././icegram.php:1026
91
+ msgid "Messages"
92
+ msgstr "Messaggi"
93
+
94
+ #: .././about-icegram.php:204
95
+ msgid "A 'Message' is a communication you want to deliver to your audience."
96
+ msgstr ""
97
+ "Un \"Messaggio\" è una comunicazione che vuoi veicolare al tuo pubblico"
98
+
99
+ #: .././about-icegram.php:205
100
+ msgid "And Icegram comes with not one, but four message types."
101
+ msgstr "Icegram ha non uno, ma ben quattro tipologie di messaggi differenti."
102
+
103
+ #: .././about-icegram.php:206
104
+ msgid ""
105
+ "Different message types look and behave differently, but they all have many "
106
+ "common characteristics. For instance, most message types will allow you to "
107
+ "set a headline, a body text, label for the ‘call to action’ button, a link "
108
+ "for that button, theme and styling options, animation effect and position on "
109
+ "screen where that message should show."
110
+ msgstr ""
111
+ "Ogni tipo di messaggio, pur avendo un aspetto e un comportamento differente, "
112
+ "presenta delle caratteristiche comuni. Per esempio, la maggior parte dei "
113
+ "messaggi ti dà la possibilità di impostare una intestazione, un corpo di "
114
+ "testo, un'etichetta per il pulsante della \"call to action\", un link "
115
+ "associato al pulsante. Potrai anche decidere le opzioni per i temi, lo stile "
116
+ "dei messaggi, gli effetti animati e la posizione sullo schermo in cui "
117
+ "verranno mostrati i tuoi messaggi."
118
+
119
+ #: .././about-icegram.php:210
120
+ msgid "Action Bar"
121
+ msgstr "Action Bar"
122
+
123
+ #: .././about-icegram.php:212
124
+ msgid ""
125
+ "An action bar is a proven attention grabber. It shows up as a solid bar "
126
+ "either at top or bottom. Use it for your most important messages or time "
127
+ "sensitive announcements. Put longer content in it and it acts like a "
128
+ "collapsible panel!"
129
+ msgstr ""
130
+ "L' \"action bar\" ti permette di catturare l'interesse degli utenti. Viene "
131
+ "mostrata come una barra nella parte superiore o inferiore della schermata. "
132
+ "Usala per i tuoi messaggi importanti o per particolari annunci temporanei. "
133
+ "Se inserisci all'interno della bar un contenuto molto lungo, la barra si "
134
+ "espanderà fino a diventare un pannello a discesa. "
135
+
136
+ #: .././about-icegram.php:213
137
+ msgid "Messenger"
138
+ msgstr "Messenger"
139
+
140
+ #: .././about-icegram.php:215
141
+ msgid ""
142
+ "A messenger is best used to invoke interest while your visitor is reading "
143
+ "your content. Users perceive it as something new, important and urgent and "
144
+ "are highly likely to click on it."
145
+ msgstr ""
146
+ "\"Messenger\" è utilizzato soprattutto per catturare l'attenzione dei "
147
+ "visitatori mentre stanno leggendo un contenuto sul tuo sito web. Gli utenti "
148
+ "percepiranno questo messaggio come qualcosa di nuovo, importante e urgente e "
149
+ "saranno più propensi a cliccare su questo banner."
150
+
151
+ #: .././about-icegram.php:219
152
+ msgid "Toast Notification"
153
+ msgstr "Toast Notification"
154
+
155
+ #: .././about-icegram.php:221
156
+ msgid ""
157
+ "Want to alert your visitor about some news, an update from your blog, a "
158
+ "social proof or an offer? Use Icegram’s unique toast notification, it will "
159
+ "catch their attention, let them click on the message, and disappear after a "
160
+ "while."
161
+ msgstr ""
162
+ "Vuoi comunicare ai tuoi visitatori la presenza di novità, un aggiornamento "
163
+ "dal tuo blog o una nuova offerta? Usa le notifiche di Icegram! Ti "
164
+ "permetteranno di catturare la loro attenzione e fare in modo che clicchino "
165
+ "sul messaggio, che scomparirà dopo poco."
166
+
167
+ #: .././about-icegram.php:222
168
+ msgid "Popup"
169
+ msgstr "Popup"
170
+
171
+ #: .././about-icegram.php:224
172
+ msgid ""
173
+ "Lightbox popup windows are most widely used for lead capture, promotions and "
174
+ "additional content display. Ask visitors to sign up to your newsletter, or "
175
+ "like you on social networks, or tell them about a special offer..."
176
+ msgstr ""
177
+ "Le finestre popup sono ampiamente usate per mostrare promozioni, contenuti o "
178
+ "per generare contatti. Puoi chiedere ai tuoi visitatori di iscriversi alla "
179
+ "newsletter, mettere \"Mi piace\" sui tuoi profili social oppure puoi usare "
180
+ "il popup per comunicare una speciale offerta... "
181
+
182
+ #: .././about-icegram.php:234 .././icegram.php:977 .././icegram.php:983
183
+ msgid "Campaigns"
184
+ msgstr "Campagne"
185
+
186
+ #: .././about-icegram.php:235
187
+ msgid "Campaign = Messages + Rules"
188
+ msgstr "Campagna = Messaggi + Regole"
189
+
190
+ #: .././about-icegram.php:236
191
+ msgid ""
192
+ "A campaign allows sequencing multiple messages and defining targeting rules. "
193
+ "Create different campaigns for different marketing goals. Icegram supports "
194
+ "showing multiple campaigns on any page."
195
+ msgstr ""
196
+ "In una campagna puoi impostare sequenze di messaggi multipli e regole di "
197
+ "targeting definite. Crea differenti campagne per raggiungere specifici "
198
+ "obiettivi di marketing. Icegram ti aiuterà a mostrare campagne multiple in "
199
+ "qualunque pagina del tuo sito. "
200
+
201
+ #: .././about-icegram.php:237
202
+ msgid ""
203
+ "You can always preview your campaign to ensure campaign works the way you "
204
+ "want, before making it live."
205
+ msgstr ""
206
+ "Visualizza sempre l'anteprima della campagne per assicurarti che funzioni "
207
+ "nel modo desiderato prima di pubblicarla."
208
+
209
+ #: .././about-icegram.php:241
210
+ msgid "Multiple Messages & Sequencing"
211
+ msgstr "Messaggi multipli & in sequenza"
212
+
213
+ #: .././about-icegram.php:243
214
+ msgid ""
215
+ "Add one or as many messages to a campaign as you want. Also choose the "
216
+ "number of seconds after which each message should show up. Showing multiple "
217
+ "messages for same goal, but with slightly different content / presentation, "
218
+ "greatly improves conversions."
219
+ msgstr ""
220
+ "Aggiungi uno o tutti i messaggi che vuoi all'interno di una campagna. Scegli "
221
+ "dopo quanti secondi mostrare il messaggio. Mostrare messaggi multipli per "
222
+ "raggiungere lo stesso obiettivo (ma con piccole varianti di contenuto e "
223
+ "presentazione) ti permetterà di aumentare in modo significativo le "
224
+ "conversioni."
225
+
226
+ #: .././about-icegram.php:247 .././classes/class-icegram-campaign-admin.php:49
227
+ msgid "Targeting Rules"
228
+ msgstr "Regole per definire il tuo pubblico"
229
+
230
+ #: .././about-icegram.php:249
231
+ msgid ""
232
+ "You can control who sees a campaign – and on what device, which pages does "
233
+ "it show on, and what time period will it stay active for. You can run "
234
+ "different campaigns with different rules to maximize engagement."
235
+ msgstr ""
236
+ "Puoi monitorare chi vede una campagna - e da quale dispositivo, da quale "
237
+ "pagina ha visto l'ha vista e per quanto tempo è rimasta attiva. Puoi "
238
+ "attivare differenti campagne con regole diverse per massimizzare il "
239
+ "coinvolgimento"
240
+
241
+ #: .././about-icegram.php:259
242
+ msgid "FAQ / Common Problems"
243
+ msgstr "FAQ/Problemi ricorrenti"
244
+
245
+ #: .././about-icegram.php:261
246
+ msgid "Messages look broken / formatting is weird..."
247
+ msgstr "Il messaggio risulta rotto /la formattazione risulta strana"
248
+
249
+ #: .././about-icegram.php:262
250
+ msgid ""
251
+ "This is most likely due to CSS conflicts with current theme. We suggest "
252
+ "using simple formatting for messages. You can also write custom CSS in your "
253
+ "theme to fix any problems."
254
+ msgstr ""
255
+ "Potrebbe essere causato da un conflitto tra il CSS e il tema corrente. Ti "
256
+ "consigliamo ti usare una formattazione semplice per il tuo messaggio. In "
257
+ "alternativa, potrai scrivere un CSS personalizzato nel tema per risolvere il "
258
+ "problema."
259
+
260
+ #: .././about-icegram.php:264
261
+ msgid "Extra Line Breaks / Paragraphs in messages..."
262
+ msgstr "Interruzioni di riga / paragrafi nei messaggi"
263
+
264
+ #: .././about-icegram.php:265
265
+ msgid ""
266
+ "Go to HTML mode in content editor and pull your custom HTML code all "
267
+ "together in one line. Don't leave blank lines between two tags. That should "
268
+ "fix it."
269
+ msgstr ""
270
+ "Vai alla sezione HTML nell'editor dei contenuti e incolla il tuo codice HTML "
271
+ "personalizzato in un'unica riga. Non lasciare spazi bianchi tra un tag e "
272
+ "l'altro."
273
+
274
+ #: .././about-icegram.php:267
275
+ msgid "How do I add custom CSS for messages?"
276
+ msgstr "Come aggiungere un CSS personaizzato ai messaggi?"
277
+
278
+ #: .././about-icegram.php:268
279
+ msgid ""
280
+ "You can use custom CSS/JS inline in your message HTML. You can also use your "
281
+ "theme's custom JS / CSS feature to add your changes."
282
+ msgstr ""
283
+ "Puoi usare un CSS o JS inline personalizzato nei tuoi messaggi HTML. Potrai "
284
+ "anche utilizzare il JS/CSS del tuo tema per aggiungere le tue modifiche."
285
+
286
+ #: .././about-icegram.php:270
287
+ msgid "Optin Forms / Mailing service integration..."
288
+ msgstr "Form opt-in / Servizi mail integrati"
289
+
290
+ # ?
291
+ #: .././about-icegram.php:271
292
+ msgid ""
293
+ "You can embed any optin / subscription form to your Icegram messages using "
294
+ "'Embed Form' button above text editor. Paste in form HTML code and let "
295
+ "Icegram clean it up! You may even use a shortcode if you are using a WP "
296
+ "plugin from your newsletter / lead capture service."
297
+ msgstr ""
298
+ "Puoi incorporare qualsiasi opt-in/form di iscrizione nelle campagne di "
299
+ "Icegram usando il pulsante \"Incorpora form\" sopra all'editor di testo. "
300
+ "Incolla il codice HTML del form e lascia che Icegram lo ripulisca!\n"
301
+ "Puoi anche usare uno shortcode se utilizzi già un plugin WP per le tue "
302
+ "newsletter/attività di lead generation"
303
+
304
+ #: .././about-icegram.php:273
305
+ msgid "How many messages should I show on a page?"
306
+ msgstr "Quanti messaggi dovrei far mostrare in una pagina?"
307
+
308
+ #: .././about-icegram.php:274
309
+ msgid ""
310
+ "While Icegram provides you lots of different message types and ability to "
311
+ "add multiple messages to a campaign, we discourage you to go overboard. "
312
+ "We've observed two messages on a page work well, but YMMV!"
313
+ msgstr ""
314
+ "Sebbene Icegram offra diversi tipi di messaggi e la possibilità di inserire "
315
+ "sequenze multiple in una stessa campagna, ti consigliamo di NON esagerare. "
316
+ "Secondo la nostra esperienza, due messaggi in una pagina danno buoni "
317
+ "risultati, ma...lasciamo decidere a te!"
318
+
319
+ #: .././about-icegram.php:280
320
+ msgid "Preview does not work / not refreshing..."
321
+ msgstr "L'anteprima non funziona/non si ricarica"
322
+
323
+ #: .././about-icegram.php:281
324
+ msgid ""
325
+ "Doing a browser refresh while previewing will not show your most recent "
326
+ "changes. Click 'Preview' button to see a preview with your latest changes."
327
+ msgstr ""
328
+ "Se fai un refresh della pagina per visualizzare l'anteprima con le "
329
+ "modifiche, non potrai visualizzare i cambiamenti recenti che hai effettuato. "
330
+ "Clicca sul pulsante \"Anteprima\" per vedere l'anteprima del messaggio con i "
331
+ "cambiamenti che hai appena apportato. "
332
+
333
+ #: .././about-icegram.php:283
334
+ msgid "Can I use shortcodes in a message?"
335
+ msgstr "Posso usare degli shortcode in un messaggio?"
336
+
337
+ #: .././about-icegram.php:284
338
+ msgid ""
339
+ "Yes! Messages support shortcodes. You may need to adjust CSS so the "
340
+ "shortcode output looks good in your message."
341
+ msgstr ""
342
+ "Sì! I messaggi supportano gli shortcode. Potresti aver bisogni di agire sul "
343
+ "CSS per far sì che contenuti incorporati tramite lo shortcode mantengano una "
344
+ "buona resa all'interno del messaggio."
345
+
346
+ #: .././about-icegram.php:286
347
+ msgid "WPML / Multilingual usage..."
348
+ msgstr "WPML/Multilingua..."
349
+
350
+ #: .././about-icegram.php:287
351
+ msgid ""
352
+ "Go to <code>Messages</code> from Icegram menu. Edit a message and translate "
353
+ "it like any other post. Icegram will show translated message where possible. "
354
+ "Choose <code>All posts</code> under WPML Language setting - Blog Posts to "
355
+ "display, to fall back to default language messages."
356
+ msgstr ""
357
+ "Clicca su\n"
358
+ "<code>Messaggi</code> dal menu di Icegram. Imposta un messaggio e traducilo "
359
+ "come qualunque altro post. Icegram mostrerà i messaggi tradotti dove "
360
+ "possibile. Scegli \n"
361
+ "<code>Tutti i post</code> sotto a Impostazioni Lingua WPML - Mostra i Post "
362
+ "del blog, per ritornare al messaggio nella lingua originaria. "
363
+
364
+ #: .././about-icegram.php:291
365
+ msgid "I can't find a way to do X..."
366
+ msgstr "Non trovo un modo per fare X..."
367
+
368
+ #: .././about-icegram.php:292
369
+ msgid ""
370
+ "Icegram is actively developed. If you can't find your favorite feature (or "
371
+ "have a suggestion) contact us. We'd love to hear from you."
372
+ msgstr ""
373
+ "Icegram è in continuo sviluppo. Se non riesci a trovare qualche funzionalità "
374
+ "(o se hai dei suggerimenti) contattaci. Saremo lieti di ascoltare i tuoi "
375
+ "consigli. "
376
+
377
+ #: .././about-icegram.php:294
378
+ msgid "I'm facing a problem and can't find a way out..."
379
+ msgstr "Sto riscontrando un problema e non trovo una soluzione"
380
+
381
+ #: .././about-icegram.php:295
382
+ msgid ""
383
+ ", provide as much detail of the problem as you can. We will try to solve the "
384
+ "problem ASAP."
385
+ msgstr ""
386
+ ", ti preghiamo di comunicarci le problematiche che riscontri in maniera "
387
+ "dettagliata. Cercheremo di risolverle appena possibile."
388
+
389
+ #: .././icegram.php:157
390
+ msgid "Free Add-ons, Proven Marketing Tricks and Updates"
391
+ msgstr "Add-on gratuiti, trucchi di Marketing e aggiornamenti"
392
+
393
+ #: .././icegram.php:162
394
+ msgid "Get add-ons and tips..."
395
+ msgstr "Trova add-ons e suggerimenti"
396
+
397
+ #: .././icegram.php:253
398
+ msgid "Housekeeping"
399
+ msgstr "Rimuovi"
400
+
401
+ #: .././icegram.php:257
402
+ msgid "Remove all Icegram shortcodes"
403
+ msgstr "Rimuovi tutti gli shortcode Icegram"
404
+
405
+ #: .././icegram.php:262
406
+ msgid "Remove all Icegram campaigns and messages"
407
+ msgstr "Rimuovi tutte le campagne e i messaggi di Icegram"
408
+
409
+ #: .././icegram.php:266
410
+ msgid "Clean Up"
411
+ msgstr "Pulisci"
412
+
413
+ #: .././icegram.php:275
414
+ msgid ""
415
+ "You won't be able to recover this data once you proceed. Do you really want "
416
+ "to perform this action?"
417
+ msgstr ""
418
+ "Non potrai più recuperare questi dati una volta continuato. Vuoi davvero "
419
+ "proseguire?"
420
+
421
+ #: .././icegram.php:289
422
+ msgid "Done!"
423
+ msgstr "Fatto!"
424
+
425
+ #: .././icegram.php:418
426
+ msgid "Settings"
427
+ msgstr "Impostazioni "
428
+
429
+ #: .././icegram.php:419
430
+ msgid "Add-ons"
431
+ msgstr "Add-ons"
432
+
433
+ #: .././icegram.php:432
434
+ msgid "Docs & Support"
435
+ msgstr "Doc & Supporto"
436
+
437
+ #: .././icegram.php:621
438
+ msgid "Powered by Icegram"
439
+ msgstr "Powered by Icegram"
440
+
441
+ #: .././icegram.php:978
442
+ msgid "Campaign"
443
+ msgstr "Campagna"
444
+
445
+ #: .././icegram.php:979 .././icegram.php:980
446
+ msgid "Add New Campaign"
447
+ msgstr "Aggiungi nuova campagna"
448
+
449
+ #: .././icegram.php:981
450
+ msgid "Edit Campaign"
451
+ msgstr "Imposta la campagna"
452
+
453
+ #: .././icegram.php:982
454
+ msgid "New Campaign"
455
+ msgstr "Nuova campagna"
456
+
457
+ #: .././icegram.php:984
458
+ msgid "View Campaign"
459
+ msgstr "Guarda la campagna"
460
+
461
+ #: .././icegram.php:985
462
+ msgid "Search Campaigns"
463
+ msgstr "Ricerca una campagna"
464
+
465
+ #: .././icegram.php:986
466
+ msgid "No campaigns found"
467
+ msgstr "Nessuna campagna trovata"
468
+
469
+ #: .././icegram.php:987
470
+ msgid "No campaigns found in Trash"
471
+ msgstr "Non ci sono camapgne nel cestino"
472
+
473
+ #: .././icegram.php:989
474
+ msgid "Icegram"
475
+ msgstr "Icegram"
476
+
477
+ #: .././icegram.php:1016
478
+ msgid "Create New"
479
+ msgstr "Crea nuovo"
480
+
481
+ #: .././icegram.php:1017
482
+ msgid "Create New Message"
483
+ msgstr "Crea un nuovo messaggio"
484
+
485
+ #: .././icegram.php:1018 .././classes/class-icegram-campaign-admin.php:103
486
+ #: .././classes/class-icegram-campaign-admin.php:502
487
+ msgid "Edit Message"
488
+ msgstr "Imposta una messaggio"
489
+
490
+ #: .././icegram.php:1019
491
+ msgid "New Message"
492
+ msgstr "Nuovo mesaggio"
493
+
494
+ #: .././icegram.php:1021
495
+ msgid "View Message"
496
+ msgstr "Guarda i messaggi"
497
+
498
+ #: .././icegram.php:1022
499
+ msgid "Search Messages"
500
+ msgstr "Ricerca i messaggi"
501
+
502
+ #: .././icegram.php:1023
503
+ msgid "No messages found"
504
+ msgstr "Nessun messaggio trovato"
505
+
506
+ #: .././icegram.php:1024
507
+ msgid "No messages found in Trash"
508
+ msgstr "Nessun messaggio nel cestino"
509
+
510
+ #: .././icegram.php:1422
511
+ msgid "Copy"
512
+ msgstr "Copia"
513
+
514
+ #: .././settings.php:19
515
+ msgid "Icegram Settings"
516
+ msgstr "Impostazioni di Icegram"
517
+
518
+ #: .././settings.php:23
519
+ msgid "Share Icegram"
520
+ msgstr "Condividi Icegram"
521
+
522
+ #: .././settings.php:27
523
+ msgid "Show \"Powered by\" link"
524
+ msgstr "Mostra \"Powered by\" link"
525
+
526
+ #: .././settings.php:32
527
+ msgid "Cache Friendly?"
528
+ msgstr "Cache Friendly?"
529
+
530
+ #: .././settings.php:36
531
+ msgid ""
532
+ "Turn on \"Lazy Load\" - load Icegram scripts and messages after page load to "
533
+ "avoid caching problems."
534
+ msgstr ""
535
+ "Passa a \"Lazy Load\" - carica gli script e i messaggi di Icegram dopo aver "
536
+ "caricato la pagina per evitare problemi di cache."
537
+
538
+ #: .././addons.php:13
539
+ msgid "Icegram Add-ons"
540
+ msgstr "Add-ons Icegram"
541
+
542
+ #: .././addons.php:47
543
+ msgid "Sorry! No Add-ons available currently."
544
+ msgstr "Ci dispiace! Nessun add-on disponibile al momento."
545
+
546
+ #: .././classes/class-icegram-message-admin.php:41
547
+ msgid "Message Settings"
548
+ msgstr "Impostazioni messaggio"
549
+
550
+ #: .././classes/class-icegram-message-admin.php:113
551
+ #: .././classes/class-icegram-message-admin.php:520
552
+ #: .././classes/class-icegram-campaign-admin.php:452
553
+ msgid "Type"
554
+ msgstr "Tipologia"
555
+
556
+ #: .././classes/class-icegram-message-admin.php:129
557
+ #: .././classes/class-icegram-message-admin.php:521
558
+ msgid "Theme"
559
+ msgstr "Temi"
560
+
561
+ #: .././classes/class-icegram-message-admin.php:146
562
+ msgid "Animation"
563
+ msgstr "Animazioni"
564
+
565
+ #: .././classes/class-icegram-message-admin.php:161
566
+ msgid "Headline"
567
+ msgstr "Intestazione"
568
+
569
+ #: .././classes/class-icegram-message-admin.php:162
570
+ msgid ""
571
+ "Shown with highest prominence. Click on idea button on right to get a new "
572
+ "headline."
573
+ msgstr ""
574
+ "Viene mostrata quella più rilevante. Clicca il bottone dei suggerimenti "
575
+ "sulla destra per ottenere una nuova intestazione."
576
+
577
+ #: .././classes/class-icegram-message-admin.php:168
578
+ msgid "Give Me Another Headline"
579
+ msgstr "Dammi un'altra intestazione"
580
+
581
+ #: .././classes/class-icegram-message-admin.php:174
582
+ msgid "Icon / Avatar Image"
583
+ msgstr "Immagine di Icona/Avatar"
584
+
585
+ #: .././classes/class-icegram-message-admin.php:175
586
+ msgid "This image will appear in message content."
587
+ msgstr "Questa immagine apparirà nel contenuto dei messaggi."
588
+
589
+ #: .././classes/class-icegram-message-admin.php:178
590
+ msgid "Upload / Select an image"
591
+ msgstr "Carica/Seleziona un'immagine"
592
+
593
+ #: .././classes/class-icegram-message-admin.php:178
594
+ msgid "Upload / Select Image"
595
+ msgstr "Carica/Seleziona l'immagine"
596
+
597
+ #: .././classes/class-icegram-message-admin.php:194
598
+ msgid "Message Body"
599
+ msgstr "Corpo del messaggio"
600
+
601
+ #: .././classes/class-icegram-message-admin.php:225
602
+ msgid "Form"
603
+ msgstr "Form"
604
+
605
+ #: .././classes/class-icegram-message-admin.php:226
606
+ msgid "Use Opt-in / Subscription / Lead capture form"
607
+ msgstr "Usa opt-in/form di iscrizione/form di contatto"
608
+
609
+ #: .././classes/class-icegram-message-admin.php:251
610
+ #: .././classes/class-icegram-message-admin.php:253
611
+ msgid "Left"
612
+ msgstr "Sinistra"
613
+
614
+ #: .././classes/class-icegram-message-admin.php:258
615
+ #: .././classes/class-icegram-message-admin.php:260
616
+ msgid "Right"
617
+ msgstr "Destra"
618
+
619
+ #: .././classes/class-icegram-message-admin.php:265
620
+ #: .././classes/class-icegram-message-admin.php:267
621
+ msgid "Bottom"
622
+ msgstr "Pulsante"
623
+
624
+ #: .././classes/class-icegram-message-admin.php:282
625
+ #: .././classes/class-icegram-message-admin.php:284
626
+ msgid "Inline"
627
+ msgstr "Interno al testo"
628
+
629
+ #: .././classes/class-icegram-message-admin.php:296
630
+ msgid "Background Color"
631
+ msgstr "Colore di sfondo"
632
+
633
+ #: .././classes/class-icegram-message-admin.php:297
634
+ msgid "Text Color"
635
+ msgstr "Colore del testo"
636
+
637
+ #: .././classes/class-icegram-message-admin.php:308
638
+ msgid "Text / HTML to show before the form"
639
+ msgstr "Testo/HTML da mostrare prima del form"
640
+
641
+ #: .././classes/class-icegram-message-admin.php:312
642
+ msgid "Form Embed Code"
643
+ msgstr "Codice del form incorporato"
644
+
645
+ #: .././classes/class-icegram-message-admin.php:314
646
+ msgid "Paste HTML / shortcode of your form here..."
647
+ msgstr "Incolla HTML/shortcode del tuo form qui..."
648
+
649
+ # ?
650
+ #: .././classes/class-icegram-message-admin.php:318
651
+ msgid "Show labels above fields"
652
+ msgstr "Mostra le etichette sopra ai campi"
653
+
654
+ #: .././classes/class-icegram-message-admin.php:325
655
+ msgid "Text / HTML to show after the form"
656
+ msgstr "Testo/HTML da mostrare dopo il form"
657
+
658
+ #: .././classes/class-icegram-message-admin.php:329
659
+ msgid ""
660
+ "Insert <code>[ig_form]</code> where you want to show this form in message "
661
+ "body."
662
+ msgstr ""
663
+ "Inserisci <code>\n"
664
+ "[ig_form]\n"
665
+ "</code> dove vuoi che venga mostrato il form nel corpo del messaggio."
666
+
667
+ #: .././classes/class-icegram-message-admin.php:336
668
+ msgid "Button Label"
669
+ msgstr "Titolo del pulsante"
670
+
671
+ #: .././classes/class-icegram-message-admin.php:337
672
+ msgid "Your call to action text. Something unusual will increase conversions."
673
+ msgstr ""
674
+ "Inserisci il testo per la call to action. Usa un testo impattante per "
675
+ "aumentare le conversioni"
676
+
677
+ #: .././classes/class-icegram-message-admin.php:347
678
+ msgid "Target Link"
679
+ msgstr "URL della pagina di destinazione "
680
+
681
+ #: .././classes/class-icegram-message-admin.php:348
682
+ msgid "Enter destination URL here. Clicking will redirect to this link."
683
+ msgstr ""
684
+ "Inserisci qui l'URL di destinazione. Al clic, verrai reindirizzato a questo "
685
+ "link."
686
+
687
+ #: .././classes/class-icegram-message-admin.php:371
688
+ msgid "Body"
689
+ msgstr "Corpo"
690
+
691
+ #: .././classes/class-icegram-message-admin.php:372
692
+ #: .././classes/class-icegram-message-admin.php:378
693
+ msgid "Background"
694
+ msgstr "Sfondo"
695
+
696
+ #: .././classes/class-icegram-message-admin.php:373
697
+ #: .././classes/class-icegram-message-admin.php:379
698
+ msgid "Text"
699
+ msgstr "Testo"
700
+
701
+ #: .././classes/class-icegram-message-admin.php:377
702
+ msgid "Button"
703
+ msgstr "Pulsante"
704
+
705
+ #: .././classes/class-icegram-message-admin.php:384
706
+ msgid "Colors"
707
+ msgstr "Colori"
708
+
709
+ #: .././classes/class-icegram-message-admin.php:385
710
+ msgid "Use theme's default colors"
711
+ msgstr "Usa i colori di default del tema"
712
+
713
+ #: .././classes/class-icegram-message-admin.php:391
714
+ msgid "Position"
715
+ msgstr "Posizione"
716
+
717
+ #: .././classes/class-icegram-message-admin.php:450
718
+ #, php-format
719
+ msgid "You may add <code>[%s]</code> where you want to show this message."
720
+ msgstr ""
721
+ "In aggiunta, puoi inserire <code>[%s]</code> ovunque tu voglia attivare "
722
+ "questa campagna."
723
+
724
+ #: .././classes/class-icegram-message-admin.php:522
725
+ msgid "Thumbnail"
726
+ msgstr "Miniatura"
727
+
728
+ #: .././classes/class-icegram-message-admin.php:664
729
+ msgid "Here Is A Method That Is Helping ____ To ____"
730
+ msgstr "Ecco un metodo che aiuterà ____ a _____"
731
+
732
+ #: .././classes/class-icegram-message-admin.php:665
733
+ msgid "__ Little Known Ways To ____"
734
+ msgstr "___ piccoli modi per ______"
735
+
736
+ #: .././classes/class-icegram-message-admin.php:666
737
+ msgid "Get Rid Of ____ Once And For All"
738
+ msgstr "Liberati di ____ una volta per tutte!"
739
+
740
+ #: .././classes/class-icegram-message-admin.php:667
741
+ msgid "How To ____ So You Can ____"
742
+ msgstr "Come ____ per ___"
743
+
744
+ #: .././classes/class-icegram-message-admin.php:668
745
+ msgid "They Didn't Think I Could ____, But I Did"
746
+ msgstr "Non pensavano che io potessi_______, ma l'ho fatto"
747
+
748
+ #: .././classes/class-icegram-message-admin.php:669
749
+ msgid "How ____ Made Me ____"
750
+ msgstr "Come ____ mi farà diventare ______"
751
+
752
+ #: .././classes/class-icegram-message-admin.php:670
753
+ msgid "Are You ____ ?"
754
+ msgstr "Sei____?"
755
+
756
+ #: .././classes/class-icegram-message-admin.php:671
757
+ msgid "Warning: ____ !"
758
+ msgstr "Attenzione: ____!"
759
+
760
+ #: .././classes/class-icegram-message-admin.php:672
761
+ msgid "Do You Make These Mistakes With ____ ?"
762
+ msgstr "Ti capita di fare errori quando ___?"
763
+
764
+ #: .././classes/class-icegram-message-admin.php:673
765
+ msgid "7 Ways To ____"
766
+ msgstr "7 modi per ____"
767
+
768
+ #: .././classes/class-icegram-message-admin.php:674
769
+ msgid "If You're ____, You Can ____"
770
+ msgstr "Se sei ____, puoi____"
771
+
772
+ #: .././classes/class-icegram-message-admin.php:675
773
+ msgid "Turn your ____ into a ____"
774
+ msgstr "Rendi i tuoi _______"
775
+
776
+ #: .././classes/class-icegram-message-admin.php:676
777
+ msgid "Want To Be A ____?"
778
+ msgstr "Vuoi essere un ____?"
779
+
780
+ #: .././classes/class-icegram-message-admin.php:677
781
+ msgid "The Ugly Truth About Your Beautiful ____"
782
+ msgstr "La triste verità del tuo ____"
783
+
784
+ #: .././classes/class-icegram-message-admin.php:678
785
+ msgid "The Secret to ____ Is Simply ____!"
786
+ msgstr "Il segreto per ____ è semplicemente ___!"
787
+
788
+ #: .././classes/class-icegram-message-admin.php:679
789
+ msgid "The Quickest Way I Know To ____"
790
+ msgstr "Il modo più veloce che io conosca è ____"
791
+
792
+ # La traduzione letterale non rendeva in italiano. Creato un titolo diverso.
793
+ #: .././classes/class-icegram-message-admin.php:680
794
+ msgid "The Lazy Man's Way To ____"
795
+ msgstr "____modi davvero semplici per____"
796
+
797
+ # La traduzione in italiano non rende. Suggerimenti?
798
+ #: .././classes/class-icegram-message-admin.php:681
799
+ msgid ""
800
+ "The Amazing Story Of ____ That Requires So Little Of ____ You Could ____"
801
+ msgstr ""
802
+ "L'incredibile storia di _____ che ti permetterà di _______ con un piccolo "
803
+ "sforzo ______"
804
+
805
+ # La traduzione in italiano non rende. Suggerimenti?
806
+ #: .././classes/class-icegram-message-admin.php:682
807
+ msgid "The Amazing Secret Of The ____ Genius Who Is Afraid Of ____"
808
+ msgstr "L'incredibile storia di ______ che aveva paura di _______"
809
+
810
+ #: .././classes/class-icegram-message-admin.php:683
811
+ msgid "The 10 Wackiest Ideas That ____... And How You Can Too!"
812
+ msgstr "Le 10 idee più stravaganti che ___ Ed ecco come puoi farlo anche tu!"
813
+
814
+ # La traduzione in italiano non rende. Ho creato un altro titolo. Altri suggerimenti?
815
+ #: .././classes/class-icegram-message-admin.php:684
816
+ msgid "The Inside Secrets To ____ With Crazy, Outlandish And Outrageous ____"
817
+ msgstr "Ecco il nostro segreto per ________ in maniera innovativa _______"
818
+
819
+ #: .././classes/class-icegram-message-admin.php:685
820
+ msgid "____ Like A ____"
821
+ msgstr "____ come ____"
822
+
823
+ #: .././classes/class-icegram-message-admin.php:686
824
+ msgid "Remember When You Could Have ____, And You Didn't?"
825
+ msgstr "Ricordi quando avresti potuto ____ e non l'hai fatto?"
826
+
827
+ # La trsduzione letterale non rendeva in italiano. Creata nuova frase.
828
+ #: .././classes/class-icegram-message-admin.php:687
829
+ msgid "Is The ____ Worth $x To You?"
830
+ msgstr "Vuoi guadagnare con _____?"
831
+
832
+ #: .././classes/class-icegram-message-admin.php:688
833
+ msgid "Increase your ____, reduce ____, maintain ____ and ____ with ____"
834
+ msgstr "Aumenta _____, riduci _____, mantieni _____ e_____ con____"
835
+
836
+ #: .././classes/class-icegram-message-admin.php:689
837
+ msgid "If You Can ____ You Can ____"
838
+ msgstr "Se puoi _______ puoi______"
839
+
840
+ #: .././classes/class-icegram-message-admin.php:690
841
+ msgid "I Discovered How To ____... Now I'm Revealing My Secret"
842
+ msgstr "Ho scoperto come _____ Ora, voglio rivelarvi il mio segreto"
843
+
844
+ #: .././classes/class-icegram-message-admin.php:691
845
+ msgid "How To Turn Your ____ Into The Most ____"
846
+ msgstr "Come far sì che i tuoi __________ diventino i più_____________"
847
+
848
+ # La traduzione letterale non rendeva in italiano. Creata nuova frase.
849
+ #
850
+ #
851
+ #: .././classes/class-icegram-message-admin.php:692
852
+ msgid "How To Take The Headache Out Of ____"
853
+ msgstr "Come risolvere una volta per tutte _____"
854
+
855
+ #: .././classes/class-icegram-message-admin.php:693
856
+ msgid "How To ____ ... Legally"
857
+ msgstr "Come ____ legalmente"
858
+
859
+ #: .././classes/class-icegram-message-admin.php:694
860
+ msgid "How To ____ That ____"
861
+ msgstr "Come ____ per____"
862
+
863
+ #: .././classes/class-icegram-message-admin.php:695
864
+ msgid "How To Discover The ____ That Lies Hidden In Your ____"
865
+ msgstr "Come scoprire ______ che giacciono nel profondo del tuo_____"
866
+
867
+ #: .././classes/class-icegram-message-admin.php:696
868
+ msgid "How To ____ Even When Your Not ____"
869
+ msgstr "Come ____ anche quando non ____"
870
+
871
+ #: .././classes/class-icegram-message-admin.php:697
872
+ msgid "____ With No ____!"
873
+ msgstr "______senza _____!"
874
+
875
+ #: .././classes/class-icegram-message-admin.php:698
876
+ msgid "Greatest Goldmine of ____ Ever Jammed Into One Big ____"
877
+ msgstr "La più grande miniera di _____ in cui ti sei mai imbattuto _______"
878
+
879
+ #: .././classes/class-icegram-message-admin.php:699
880
+ msgid "Free ____ Tells How To Get Better ____"
881
+ msgstr "Questa _____ gratuita ti mostrerà come migliorare ______"
882
+
883
+ #: .././classes/class-icegram-message-admin.php:700
884
+ msgid ""
885
+ "FREE ____ Worth $____ for the first 100 People to take Advantage of this "
886
+ "Offer"
887
+ msgstr ""
888
+ "_____ gratuito del valore di _____ per le prime 100 persone che approfittano "
889
+ "di questa offerta"
890
+
891
+ #: .././classes/class-icegram-message-admin.php:701
892
+ msgid "Don't Try This With Any Other ____"
893
+ msgstr "Non provare ______con nessun altro _____"
894
+
895
+ #: .././classes/class-icegram-message-admin.php:702
896
+ msgid "Do You Honestly Want To ____?"
897
+ msgstr "Vuoi davvero ____?"
898
+
899
+ #: .././classes/class-icegram-message-admin.php:703
900
+ msgid "Discover The Magic ____ That Will Bring You ____ & ____!"
901
+ msgstr "Scopri la magia di ____ che ti porterà ____ &_____!"
902
+
903
+ #: .././classes/class-icegram-message-admin.php:704
904
+ msgid "____ Man Reveals A Short-Cut To ____"
905
+ msgstr "____ "
906
+
907
+ #: .././classes/class-icegram-message-admin.php:705
908
+ msgid "Confessions Of A ____"
909
+ msgstr "Le confessioni di un____"
910
+
911
+ #: .././classes/class-icegram-message-admin.php:706
912
+ msgid "Are You Ready To ____?"
913
+ msgstr "Sei pronto per ___?"
914
+
915
+ #: .././classes/class-icegram-message-admin.php:707
916
+ msgid "An Open Letter To Everyone Who ____ More Than ____ Per ____"
917
+ msgstr "Una lettera aperta a tutti quelli che ____ più di____"
918
+
919
+ #: .././classes/class-icegram-message-admin.php:708
920
+ msgid "An Amazing ____ You Can Carry In Your ____"
921
+ msgstr "Un fantastico ______ che puoi utilizzare nel tuo______"
922
+
923
+ #: .././classes/class-icegram-message-admin.php:709
924
+ msgid "21 Secret ____ that will ____... NOW!"
925
+ msgstr "21 segreti _______ che ti permetteranno di _____...ORA!"
926
+
927
+ #: .././classes/class-icegram-message-admin.php:716
928
+ #: .././classes/class-icegram-campaign-admin.php:661
929
+ msgid "Duplicate"
930
+ msgstr "Duplica"
931
+
932
+ #: .././classes/class-icegram-campaign-admin.php:56
933
+ msgid "Search to add / Create new&hellip;"
934
+ msgstr "Cerca per aggiungere/Creare nuovo..."
935
+
936
+ #: .././classes/class-icegram-campaign-admin.php:59
937
+ #: .././classes/class-icegram-campaign-admin.php:439
938
+ msgid "Create new"
939
+ msgstr "Crea nuovo"
940
+
941
+ #: .././classes/class-icegram-campaign-admin.php:62
942
+ msgid "Preview"
943
+ msgstr "Anteprima"
944
+
945
+ #: .././classes/class-icegram-campaign-admin.php:95
946
+ #: .././classes/class-icegram-campaign-admin.php:495
947
+ msgid "Give this message a name for your own reference"
948
+ msgstr ""
949
+ "Dai a questo messaggio un nome per identificarlo (questo nome NON verrà "
950
+ "visualizzato dagli utenti)"
951
+
952
+ #: .././classes/class-icegram-campaign-admin.php:100
953
+ #: .././classes/class-icegram-campaign-admin.php:499
954
+ msgid " sec"
955
+ msgstr "sec"
956
+
957
+ #: .././classes/class-icegram-campaign-admin.php:104
958
+ #: .././classes/class-icegram-campaign-admin.php:503
959
+ msgid "Remove from Campaign"
960
+ msgstr "Rimuovi dalla campagna"
961
+
962
+ #: .././classes/class-icegram-campaign-admin.php:122
963
+ msgid ""
964
+ "No messages yet. Use search / create bar above to add messages to this "
965
+ "campaign."
966
+ msgstr ""
967
+ "Nessun messaggio. Usa la barra cerca/crea per aggiungere messaggi a questa "
968
+ "campagna."
969
+
970
+ #: .././classes/class-icegram-campaign-admin.php:160
971
+ msgid "Where?"
972
+ msgstr "Dove?"
973
+
974
+ #: .././classes/class-icegram-campaign-admin.php:163
975
+ msgid "Sitewide"
976
+ msgstr "Tutte le pagine del sito"
977
+
978
+ #: .././classes/class-icegram-campaign-admin.php:165
979
+ #, php-format
980
+ msgid ""
981
+ "Additionally you can insert <code>[%s]</code> wherever you want to run this "
982
+ "campaign."
983
+ msgstr ""
984
+ "In aggiunta, puoi inserire <code>[%s]</code> ovunque tu voglia attivare "
985
+ "questa campagna."
986
+
987
+ #: .././classes/class-icegram-campaign-admin.php:172
988
+ msgid "Select pages to exclude&hellip;"
989
+ msgstr "Seleziona una pagina da escludere..."
990
+
991
+ #: .././classes/class-icegram-campaign-admin.php:187
992
+ msgid "Homepage"
993
+ msgstr "Homepage"
994
+
995
+ #: .././classes/class-icegram-campaign-admin.php:194
996
+ msgid "Selected pages"
997
+ msgstr "Pagine selezionate"
998
+
999
+ #: .././classes/class-icegram-campaign-admin.php:200
1000
+ msgid "Select a page&hellip;"
1001
+ msgstr "Seleziona una pagina..."
1002
+
1003
+ #: .././classes/class-icegram-campaign-admin.php:215
1004
+ msgid "Specific URLs on this site"
1005
+ msgstr "Specifiche URL del sito"
1006
+
1007
+ #: .././classes/class-icegram-campaign-admin.php:231
1008
+ msgid " Add another"
1009
+ msgstr "Aggiungi "
1010
+
1011
+ #: .././classes/class-icegram-campaign-admin.php:241
1012
+ msgid "When?"
1013
+ msgstr "Quando?"
1014
+
1015
+ #: .././classes/class-icegram-campaign-admin.php:244
1016
+ msgid "Always"
1017
+ msgstr "Sempre"
1018
+
1019
+ #: .././classes/class-icegram-campaign-admin.php:251
1020
+ msgid "Schedule"
1021
+ msgstr "Pianifica"
1022
+
1023
+ #: .././classes/class-icegram-campaign-admin.php:254
1024
+ msgid "From&hellip;"
1025
+ msgstr "Da..."
1026
+
1027
+ #: .././classes/class-icegram-campaign-admin.php:257
1028
+ msgid "To&hellip;"
1029
+ msgstr "A..."
1030
+
1031
+ #: .././classes/class-icegram-campaign-admin.php:265
1032
+ msgid "Device?"
1033
+ msgstr "Dispositivo?"
1034
+
1035
+ #: .././classes/class-icegram-campaign-admin.php:266
1036
+ msgid "Mobile / Smartphones"
1037
+ msgstr "Mobile/ Smartphones"
1038
+
1039
+ #: .././classes/class-icegram-campaign-admin.php:270
1040
+ msgid "Tablet"
1041
+ msgstr "Tablet"
1042
+
1043
+ #: .././classes/class-icegram-campaign-admin.php:274
1044
+ msgid "Desktop / Laptop"
1045
+ msgstr "Desktop/Laptop"
1046
+
1047
+ #: .././classes/class-icegram-campaign-admin.php:282
1048
+ msgid "Who?"
1049
+ msgstr "Chi?"
1050
+
1051
+ #: .././classes/class-icegram-campaign-admin.php:285
1052
+ msgid "All users"
1053
+ msgstr "Tutti gli utenti"
1054
+
1055
+ #: .././classes/class-icegram-campaign-admin.php:292
1056
+ msgid "Logged in users only"
1057
+ msgstr "Solo per utenti loggati"
1058
+
1059
+ #: .././classes/class-icegram-campaign-admin.php:311
1060
+ msgid "Select a user role&hellip;"
1061
+ msgstr "Seleziona un ruolo utente..."
1062
+
1063
+ #: .././classes/class-icegram-campaign-admin.php:327
1064
+ msgid "Not Logged in users"
1065
+ msgstr "Utenti non loggati"
1066
+
1067
+ #: .././classes/class-icegram-campaign-admin.php:331
1068
+ #: .././classes/class-icegram-campaign-admin.php:341
1069
+ msgid "Current Session"
1070
+ msgstr "Sessione corrente"
1071
+
1072
+ #: .././classes/class-icegram-campaign-admin.php:332
1073
+ #: .././classes/class-icegram-campaign-admin.php:340
1074
+ msgid "Never"
1075
+ msgstr "Mai"
1076
+
1077
+ #: .././classes/class-icegram-campaign-admin.php:333
1078
+ #: .././classes/class-icegram-campaign-admin.php:342
1079
+ msgid "Today"
1080
+ msgstr "Oggi"
1081
+
1082
+ #: .././classes/class-icegram-campaign-admin.php:334
1083
+ #: .././classes/class-icegram-campaign-admin.php:343
1084
+ msgid "One week"
1085
+ msgstr "Una settimana"
1086
+
1087
+ #: .././classes/class-icegram-campaign-admin.php:335
1088
+ #: .././classes/class-icegram-campaign-admin.php:344
1089
+ msgid "Two weeks"
1090
+ msgstr "Due settimane"
1091
+
1092
+ #: .././classes/class-icegram-campaign-admin.php:336
1093
+ #: .././classes/class-icegram-campaign-admin.php:345
1094
+ msgid "One Month "
1095
+ msgstr "Un mese"
1096
+
1097
+ #: .././classes/class-icegram-campaign-admin.php:337
1098
+ #: .././classes/class-icegram-campaign-admin.php:346
1099
+ msgid "Three Months "
1100
+ msgstr "Tre mesi"
1101
+
1102
+ #: .././classes/class-icegram-campaign-admin.php:338
1103
+ #: .././classes/class-icegram-campaign-admin.php:347
1104
+ msgid "One year"
1105
+ msgstr "Un anno"
1106
+
1107
+ #: .././classes/class-icegram-campaign-admin.php:339
1108
+ #: .././classes/class-icegram-campaign-admin.php:348
1109
+ msgid "Two Years"
1110
+ msgstr "Due anni"
1111
+
1112
+ #: .././classes/class-icegram-campaign-admin.php:353
1113
+ msgid "Retargeting"
1114
+ msgstr "Retargeting"
1115
+
1116
+ #: .././classes/class-icegram-campaign-admin.php:356
1117
+ msgid "Once shown, do NOT show this campaign again for"
1118
+ msgstr "Una volta mostrata, NON mostrare ancora la campagna per"
1119
+
1120
+ #: .././classes/class-icegram-campaign-admin.php:371
1121
+ msgid "Once CTA is clicked, do NOT show this campaign again for"
1122
+ msgstr "Una volta cliccata la CTA, NON mostrare ancora questa campagna per"
1123
+
1124
+ #: .././classes/class-icegram-campaign-admin.php:435
1125
+ msgid "- - - - - - - - - - - - - - - - - - - - - - - - - -"
1126
+ msgstr "- - - - - - - - - - - - - - - - - - - - - - - - - -"
1127
+
1128
+ #: .././classes/class-icegram-campaign-admin.php:454
1129
+ msgid "Show after"
1130
+ msgstr "Mostra in seguito"
1131
+
1132
+ #: .././classes/class-icegram-campaign-admin.php:455
1133
+ msgid "Actions"
1134
+ msgstr "Azioni"
trunk/lang/src/icegram.pot ADDED
@@ -0,0 +1,801 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2014 Icegram
2
+ # This file is distributed under the same license as the Icegram package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Icegram 1.1.1\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/icegram\n"
7
+ "POT-Creation-Date: 2014-06-10 06:09:11+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: Icegram Team <hello@icegram.com>\n"
13
+ "Language-Team: Icegram Team <hello@icegram.com>\n"
14
+
15
+ #: about-icegram.php:151 classes/class-wp-campaign.php:216
16
+ #: icegram-includes/class-icegram-upgrade.php:335
17
+ msgid "Name"
18
+ msgstr ""
19
+
20
+ #: about-icegram.php:155 icegram-includes/class-icegram-upgrade.php:339
21
+ msgid "E-mail"
22
+ msgstr ""
23
+
24
+ #: about-icegram.php:160 icegram-includes/class-icegram-upgrade.php:343
25
+ msgid "Product"
26
+ msgstr ""
27
+
28
+ #: about-icegram.php:166 icegram-includes/class-icegram-upgrade.php:347
29
+ msgid "Subject"
30
+ msgstr ""
31
+
32
+ #: about-icegram.php:170 icegram-includes/class-icegram-upgrade.php:351
33
+ #: icegram.php:446
34
+ msgid "Message"
35
+ msgstr ""
36
+
37
+ #: about-icegram.php:210 icegram.php:97
38
+ msgid "Welcome to Icegram"
39
+ msgstr ""
40
+
41
+ #: about-icegram.php:212
42
+ msgid ""
43
+ "Your sample campaign is ready. We've added a few messages for you to test."
44
+ msgstr ""
45
+
46
+ #: about-icegram.php:220
47
+ msgid "Edit & Publish it"
48
+ msgstr ""
49
+
50
+ #: about-icegram.php:221
51
+ msgid "OR"
52
+ msgstr ""
53
+
54
+ #: about-icegram.php:222
55
+ msgid "Preview Campaign"
56
+ msgstr ""
57
+
58
+ #: about-icegram.php:228
59
+ msgid "Version: %s"
60
+ msgstr ""
61
+
62
+ #: about-icegram.php:231
63
+ msgid "Questions? Need Help?"
64
+ msgstr ""
65
+
66
+ #: about-icegram.php:232 about-icegram.php:321
67
+ msgid "Contact Us"
68
+ msgstr ""
69
+
70
+ #: about-icegram.php:238
71
+ msgid ""
72
+ "Do read Icegram's core concepts below to understand how you can use Icegram "
73
+ "to inspire, convert and engage your audience."
74
+ msgstr ""
75
+
76
+ #: about-icegram.php:244 icegram.php:445 icegram.php:451 icegram.php:457
77
+ msgid "Messages"
78
+ msgstr ""
79
+
80
+ #: about-icegram.php:246
81
+ msgid "A 'Message' is a communication you want to deliver to your audience."
82
+ msgstr ""
83
+
84
+ #: about-icegram.php:247
85
+ msgid "And Icegram comes with not one, but four message types."
86
+ msgstr ""
87
+
88
+ #: about-icegram.php:248
89
+ msgid ""
90
+ "Different message types look and behave differently, but they all have many "
91
+ "common characteristics. For instance, most message types will allow you to "
92
+ "set a headline, a body text, label for the ‘call to action’ button, a link "
93
+ "for that button, theme and styling options, animation effect and position on "
94
+ "screen where that message should show."
95
+ msgstr ""
96
+
97
+ #: about-icegram.php:251
98
+ msgid "Action Bar"
99
+ msgstr ""
100
+
101
+ #: about-icegram.php:253
102
+ msgid ""
103
+ "An action bar is a proven attention grabber. It shows up as a solid bar "
104
+ "either at top or bottom. Use it for your most important messages or time "
105
+ "sensitive announcements. Put longer content in it and it acts like a "
106
+ "collapsible panel!"
107
+ msgstr ""
108
+
109
+ #: about-icegram.php:254
110
+ msgid "Messenger"
111
+ msgstr ""
112
+
113
+ #: about-icegram.php:256
114
+ msgid ""
115
+ "A messenger is best used to invoke interest while your visitor is reading "
116
+ "your content. Users perceive it as something new, important and urgent and "
117
+ "are highly likely to click on it."
118
+ msgstr ""
119
+
120
+ #: about-icegram.php:259
121
+ msgid "Toast Notification"
122
+ msgstr ""
123
+
124
+ #: about-icegram.php:261
125
+ msgid ""
126
+ "Want to alert your visitor about some news, an update from your blog, a "
127
+ "social proof or an offer? Use Icegram’s unique toast notification, it will "
128
+ "catch their attention, let them click on the message, and disappear after a "
129
+ "while."
130
+ msgstr ""
131
+
132
+ #: about-icegram.php:262
133
+ msgid "Popup"
134
+ msgstr ""
135
+
136
+ #: about-icegram.php:264
137
+ msgid ""
138
+ "Lightbox popup windows are most widely used for lead capture, promotions and "
139
+ "additional content display. Ask visitors to sign up to your newsletter, or "
140
+ "like you on social networks, or tell them about a special offer..."
141
+ msgstr ""
142
+
143
+ #: about-icegram.php:273 icegram.php:408 icegram.php:414
144
+ msgid "Campaigns"
145
+ msgstr ""
146
+
147
+ #: about-icegram.php:274
148
+ msgid "Campaign = Messages + Rules"
149
+ msgstr ""
150
+
151
+ #: about-icegram.php:275
152
+ msgid ""
153
+ "A campaign allows sequencing multiple messages and defining targeting rules. "
154
+ "Create different campaigns for different marketing goals. Icegram supports "
155
+ "showing multiple campaigns on any page."
156
+ msgstr ""
157
+
158
+ #: about-icegram.php:276
159
+ msgid ""
160
+ "You can always preview your campaign to ensure campaign works the way you "
161
+ "want, before making it live."
162
+ msgstr ""
163
+
164
+ #: about-icegram.php:279
165
+ msgid "Multiple Messages & Sequencing"
166
+ msgstr ""
167
+
168
+ #: about-icegram.php:281
169
+ msgid ""
170
+ "Add one or as many messages to a campaign as you want. Also choose the "
171
+ "number of seconds after which each message should show up. Showing multiple "
172
+ "messages for same goal, but with slightly different content / presentation, "
173
+ "greatly improves conversions."
174
+ msgstr ""
175
+
176
+ #: about-icegram.php:284
177
+ msgid "Targeting Rules"
178
+ msgstr ""
179
+
180
+ #: about-icegram.php:286
181
+ msgid ""
182
+ "You can control who sees a campaign – and on what device, which pages does "
183
+ "it show on, and what time period will it stay active for. You can run "
184
+ "different campaigns with different rules to maximize engagement."
185
+ msgstr ""
186
+
187
+ #: about-icegram.php:294
188
+ msgid "FAQ / Common Problems"
189
+ msgstr ""
190
+
191
+ #: about-icegram.php:296
192
+ msgid "Messages look broken / formatting is weird..."
193
+ msgstr ""
194
+
195
+ #: about-icegram.php:297
196
+ msgid ""
197
+ "This is most likely due to CSS conflicts with current theme. We suggest "
198
+ "using simple formatting for messages. You can also write custom CSS in your "
199
+ "theme to fix any problems."
200
+ msgstr ""
201
+
202
+ #: about-icegram.php:299
203
+ msgid "Extra Line Breaks / Paragraphs in messages..."
204
+ msgstr ""
205
+
206
+ #: about-icegram.php:300
207
+ msgid ""
208
+ "Go to HTML mode in content editor and pull your custom HTML code all "
209
+ "together in one line. Don't leave blank lines between two tags. That should "
210
+ "fix it."
211
+ msgstr ""
212
+
213
+ #: about-icegram.php:302
214
+ msgid "How do I add custom CSS for messages?"
215
+ msgstr ""
216
+
217
+ #: about-icegram.php:303
218
+ msgid ""
219
+ "You can use custom CSS/JS inline in your message HTML. You can also use your "
220
+ "theme's custom JS / CSS feature to add your changes."
221
+ msgstr ""
222
+
223
+ #: about-icegram.php:305
224
+ msgid "Optin Forms / Mailing service integration..."
225
+ msgstr ""
226
+
227
+ #: about-icegram.php:306
228
+ msgid ""
229
+ "You can embed any optin / subscription form to your Icegram messages using "
230
+ "HTML code. You may even use a shortcode if you are using a WP plugin from "
231
+ "your newsletter / lead capture service."
232
+ msgstr ""
233
+
234
+ #: about-icegram.php:310
235
+ msgid "Preview does not work / not refreshing..."
236
+ msgstr ""
237
+
238
+ #: about-icegram.php:311
239
+ msgid ""
240
+ "Doing a browser refresh while previewing will not show your most recent "
241
+ "changes. Click 'Preview' button to see a preview with your latest changes."
242
+ msgstr ""
243
+
244
+ #: about-icegram.php:313
245
+ msgid "Can I use shortcodes in a message?"
246
+ msgstr ""
247
+
248
+ #: about-icegram.php:314
249
+ msgid ""
250
+ "Yes! Messages support shortcodes. You may need to adjust CSS so the "
251
+ "shortcode output looks good in your message."
252
+ msgstr ""
253
+
254
+ #: about-icegram.php:317
255
+ msgid "I can't find a way to do X..."
256
+ msgstr ""
257
+
258
+ #: about-icegram.php:318
259
+ msgid ""
260
+ "Icegram is actively developed. If you can't find your favorite feature (or "
261
+ "have a suggestion) contact us. We'd love to hear from you."
262
+ msgstr ""
263
+
264
+ #: about-icegram.php:320
265
+ msgid "I'm facing a problem and can't find a way out..."
266
+ msgstr ""
267
+
268
+ #: about-icegram.php:321
269
+ msgid ""
270
+ ", provide as much detail of the problem as you can. We will try to solve the "
271
+ "problem ASAP."
272
+ msgstr ""
273
+
274
+ #: classes/class-wp-campaign.php:67
275
+ msgid "Message &mdash; "
276
+ msgstr ""
277
+
278
+ #: classes/class-wp-campaign.php:68
279
+ msgid "Search to add / Create new&hellip;"
280
+ msgstr ""
281
+
282
+ #: classes/class-wp-campaign.php:73 classes/class-wp-campaign.php:202
283
+ msgid "Create new"
284
+ msgstr ""
285
+
286
+ #: classes/class-wp-campaign.php:77
287
+ msgid "Preview"
288
+ msgstr ""
289
+
290
+ #: classes/class-wp-campaign.php:80
291
+ msgid ""
292
+ "Targeting Rules <em>Messages in this campaign will be shown when all these "
293
+ "rules match...</em>"
294
+ msgstr ""
295
+
296
+ #: classes/class-wp-campaign.php:112 classes/class-wp-campaign.php:255
297
+ msgid "Give this message a name for your own reference"
298
+ msgstr ""
299
+
300
+ #: classes/class-wp-campaign.php:117 classes/class-wp-campaign.php:259
301
+ msgid " sec"
302
+ msgstr ""
303
+
304
+ #: classes/class-wp-campaign.php:120 classes/class-wp-campaign.php:262
305
+ #: icegram.php:449
306
+ msgid "Edit Message"
307
+ msgstr ""
308
+
309
+ #: classes/class-wp-campaign.php:121 classes/class-wp-campaign.php:263
310
+ msgid "Remove from Campaign"
311
+ msgstr ""
312
+
313
+ #: classes/class-wp-campaign.php:139
314
+ msgid ""
315
+ "No messages yet. Use search / create bar above to add messages to this "
316
+ "campaign."
317
+ msgstr ""
318
+
319
+ #: classes/class-wp-campaign.php:198
320
+ msgid "- - - - - - - - - - - - - - - - - - - - - - - - - -"
321
+ msgstr ""
322
+
323
+ #: classes/class-wp-campaign.php:215 classes/class-wp-message.php:72
324
+ #: classes/class-wp-message.php:200
325
+ msgid "Type"
326
+ msgstr ""
327
+
328
+ #: classes/class-wp-campaign.php:217
329
+ msgid "Show after"
330
+ msgstr ""
331
+
332
+ #: classes/class-wp-campaign.php:218
333
+ msgid "Actions"
334
+ msgstr ""
335
+
336
+ #: classes/class-wp-campaign.php:293
337
+ msgid "Where?"
338
+ msgstr ""
339
+
340
+ #: classes/class-wp-campaign.php:296
341
+ msgid "Sitewide"
342
+ msgstr ""
343
+
344
+ #: classes/class-wp-campaign.php:303
345
+ msgid "Homepage"
346
+ msgstr ""
347
+
348
+ #: classes/class-wp-campaign.php:310
349
+ msgid "Selected pages"
350
+ msgstr ""
351
+
352
+ #: classes/class-wp-campaign.php:316
353
+ msgid "Select a page&hellip;"
354
+ msgstr ""
355
+
356
+ #: classes/class-wp-campaign.php:330
357
+ msgid ""
358
+ "Additionally you can insert <code>[%s]</code> wherever you want to run this "
359
+ "campaign."
360
+ msgstr ""
361
+
362
+ #: classes/class-wp-campaign.php:336
363
+ msgid "When?"
364
+ msgstr ""
365
+
366
+ #: classes/class-wp-campaign.php:339
367
+ msgid "Always"
368
+ msgstr ""
369
+
370
+ #: classes/class-wp-campaign.php:346
371
+ msgid "Schedule"
372
+ msgstr ""
373
+
374
+ #: classes/class-wp-campaign.php:349
375
+ msgid "From&hellip;"
376
+ msgstr ""
377
+
378
+ #: classes/class-wp-campaign.php:352
379
+ msgid "To&hellip;"
380
+ msgstr ""
381
+
382
+ #: classes/class-wp-campaign.php:360
383
+ msgid "Device?"
384
+ msgstr ""
385
+
386
+ #: classes/class-wp-campaign.php:361
387
+ msgid "Mobile / Smartphones"
388
+ msgstr ""
389
+
390
+ #: classes/class-wp-campaign.php:365
391
+ msgid "Tablet"
392
+ msgstr ""
393
+
394
+ #: classes/class-wp-campaign.php:369
395
+ msgid "Desktop / Laptop"
396
+ msgstr ""
397
+
398
+ #: classes/class-wp-campaign.php:377
399
+ msgid "Who?"
400
+ msgstr ""
401
+
402
+ #: classes/class-wp-campaign.php:380
403
+ msgid "All users"
404
+ msgstr ""
405
+
406
+ #: classes/class-wp-campaign.php:387
407
+ msgid "Logged in users only"
408
+ msgstr ""
409
+
410
+ #: classes/class-wp-campaign.php:405
411
+ msgid "Select a user role&hellip;"
412
+ msgstr ""
413
+
414
+ #: classes/class-wp-campaign.php:420
415
+ msgid "Retargeting"
416
+ msgstr ""
417
+
418
+ #: classes/class-wp-campaign.php:423
419
+ msgid "Once shown, do NOT show a message again for current session"
420
+ msgstr ""
421
+
422
+ #: classes/class-wp-message.php:73 classes/class-wp-message.php:212
423
+ msgid "Theme"
424
+ msgstr ""
425
+
426
+ #: classes/class-wp-message.php:74
427
+ msgid "Thumbnail"
428
+ msgstr ""
429
+
430
+ #: classes/class-wp-message.php:141
431
+ msgid "Message Settings"
432
+ msgstr ""
433
+
434
+ #: classes/class-wp-message.php:224 classes/class-wp-message.php:232
435
+ msgid "Animation"
436
+ msgstr ""
437
+
438
+ #: classes/class-wp-message.php:241
439
+ msgid "Headline"
440
+ msgstr ""
441
+
442
+ #: classes/class-wp-message.php:242
443
+ msgid ""
444
+ "Shown with highest prominence. Click on idea button on right to get a new "
445
+ "headline."
446
+ msgstr ""
447
+
448
+ #: classes/class-wp-message.php:245
449
+ msgid "Give Me Another Headline"
450
+ msgstr ""
451
+
452
+ #: classes/class-wp-message.php:251
453
+ msgid "Button Label"
454
+ msgstr ""
455
+
456
+ #: classes/class-wp-message.php:252
457
+ msgid "Your call to action text. Something unusual will increase conversions."
458
+ msgstr ""
459
+
460
+ #: classes/class-wp-message.php:258
461
+ msgid "Target Link"
462
+ msgstr ""
463
+
464
+ #: classes/class-wp-message.php:259
465
+ msgid "Enter destination URL here. Clicking will redirect to this link."
466
+ msgstr ""
467
+
468
+ #: classes/class-wp-message.php:265
469
+ msgid "Icon / Avatar Image"
470
+ msgstr ""
471
+
472
+ #: classes/class-wp-message.php:266
473
+ msgid "This image will appear in message content."
474
+ msgstr ""
475
+
476
+ #: classes/class-wp-message.php:269
477
+ msgid "Upload / Select an image"
478
+ msgstr ""
479
+
480
+ #: classes/class-wp-message.php:269
481
+ msgid "Upload / Select Image"
482
+ msgstr ""
483
+
484
+ #: classes/class-wp-message.php:274
485
+ msgid "Backgound Color"
486
+ msgstr ""
487
+
488
+ #: classes/class-wp-message.php:278
489
+ msgid "Text Color"
490
+ msgstr ""
491
+
492
+ #: classes/class-wp-message.php:292
493
+ msgid "Message Body"
494
+ msgstr ""
495
+
496
+ #: classes/class-wp-message.php:297
497
+ msgid "Position"
498
+ msgstr ""
499
+
500
+ #: classes/class-wp-message.php:358
501
+ msgid ""
502
+ "You can insert <code>[%s]</code> wherever you want to show this message. We "
503
+ "recommend running a campaign though."
504
+ msgstr ""
505
+
506
+ #: classes/class-wp-message.php:424
507
+ msgid "Here Is A Method That Is Helping ____ To ____"
508
+ msgstr ""
509
+
510
+ #: classes/class-wp-message.php:425
511
+ msgid "__ Little Known Ways To ____"
512
+ msgstr ""
513
+
514
+ #: classes/class-wp-message.php:426
515
+ msgid "Get Rid Of ____ Once And For All"
516
+ msgstr ""
517
+
518
+ #: classes/class-wp-message.php:427
519
+ msgid "How To ____ So You Can ____"
520
+ msgstr ""
521
+
522
+ #: classes/class-wp-message.php:428
523
+ msgid "They Didn't Think I Could ____, But I Did"
524
+ msgstr ""
525
+
526
+ #: classes/class-wp-message.php:429
527
+ msgid "How ____ Made Me ____"
528
+ msgstr ""
529
+
530
+ #: classes/class-wp-message.php:430
531
+ msgid "Are You ____ ?"
532
+ msgstr ""
533
+
534
+ #: classes/class-wp-message.php:431
535
+ msgid "Warning: ____ !"
536
+ msgstr ""
537
+
538
+ #: classes/class-wp-message.php:432
539
+ msgid "Do You Make These Mistakes With ____ ?"
540
+ msgstr ""
541
+
542
+ #: classes/class-wp-message.php:433
543
+ msgid "7 Ways To ____"
544
+ msgstr ""
545
+
546
+ #: classes/class-wp-message.php:434
547
+ msgid "If You're ____, You Can ____"
548
+ msgstr ""
549
+
550
+ #: classes/class-wp-message.php:435
551
+ msgid "Turn your ____ into a ____"
552
+ msgstr ""
553
+
554
+ #: classes/class-wp-message.php:436
555
+ msgid "Want To Be A ____?"
556
+ msgstr ""
557
+
558
+ #: classes/class-wp-message.php:437
559
+ msgid "The Ugly Truth About Your Beautiful ____"
560
+ msgstr ""
561
+
562
+ #: classes/class-wp-message.php:438
563
+ msgid "The Secret to ____ Is Simply ____!"
564
+ msgstr ""
565
+
566
+ #: classes/class-wp-message.php:439
567
+ msgid "The Quickest Way I Know To ____"
568
+ msgstr ""
569
+
570
+ #: classes/class-wp-message.php:440
571
+ msgid "The Lazy Man's Way To ____"
572
+ msgstr ""
573
+
574
+ #: classes/class-wp-message.php:441
575
+ msgid ""
576
+ "The Amazing Story Of ____ That Requires So Little Of ____ You Could ____"
577
+ msgstr ""
578
+
579
+ #: classes/class-wp-message.php:442
580
+ msgid "The Amazing Secret Of The ____ Genius Who Is Afraid Of ____"
581
+ msgstr ""
582
+
583
+ #: classes/class-wp-message.php:443
584
+ msgid "The 10 Wackiest Ideas That ____... And How You Can Too!"
585
+ msgstr ""
586
+
587
+ #: classes/class-wp-message.php:444
588
+ msgid "The Inside Secrets To ____ With Crazy, Outlandish And Outrageous ____"
589
+ msgstr ""
590
+
591
+ #: classes/class-wp-message.php:445
592
+ msgid "____ Like A ____"
593
+ msgstr ""
594
+
595
+ #: classes/class-wp-message.php:446
596
+ msgid "Remember When You Could Have ____, And You Didn't?"
597
+ msgstr ""
598
+
599
+ #: classes/class-wp-message.php:447
600
+ msgid "Is The ____ Worth $x To You?"
601
+ msgstr ""
602
+
603
+ #: classes/class-wp-message.php:448
604
+ msgid "Increase your ____, reduce ____, maintain ____ and ____ with ____"
605
+ msgstr ""
606
+
607
+ #: classes/class-wp-message.php:449
608
+ msgid "If You Can ____ You Can ____"
609
+ msgstr ""
610
+
611
+ #: classes/class-wp-message.php:450
612
+ msgid "I Discovered How To ____... Now I'm Revealing My Secret"
613
+ msgstr ""
614
+
615
+ #: classes/class-wp-message.php:451
616
+ msgid "How To Turn Your ____ Into The Most ____"
617
+ msgstr ""
618
+
619
+ #: classes/class-wp-message.php:452
620
+ msgid "How To Take The Headache Out Of ____"
621
+ msgstr ""
622
+
623
+ #: classes/class-wp-message.php:453
624
+ msgid "How To ____ ... Legally"
625
+ msgstr ""
626
+
627
+ #: classes/class-wp-message.php:454
628
+ msgid "How To ____ That ____"
629
+ msgstr ""
630
+
631
+ #: classes/class-wp-message.php:455
632
+ msgid "How To Discover The ____ That Lies Hidden In Your ____"
633
+ msgstr ""
634
+
635
+ #: classes/class-wp-message.php:456
636
+ msgid "How To ____ Even When Your Not ____"
637
+ msgstr ""
638
+
639
+ #: classes/class-wp-message.php:457
640
+ msgid "____ With No ____!"
641
+ msgstr ""
642
+
643
+ #: classes/class-wp-message.php:458
644
+ msgid "Greatest Goldmine of ____ Ever Jammed Into One Big ____"
645
+ msgstr ""
646
+
647
+ #: classes/class-wp-message.php:459
648
+ msgid "Free ____ Tells How To Get Better ____"
649
+ msgstr ""
650
+
651
+ #: classes/class-wp-message.php:460
652
+ msgid ""
653
+ "FREE ____ Worth $____ for the first 100 People to take Advantage of this "
654
+ "Offer"
655
+ msgstr ""
656
+
657
+ #: classes/class-wp-message.php:461
658
+ msgid "Don't Try This With Any Other ____"
659
+ msgstr ""
660
+
661
+ #: classes/class-wp-message.php:462
662
+ msgid "Do You Honestly Want To ____?"
663
+ msgstr ""
664
+
665
+ #: classes/class-wp-message.php:463
666
+ msgid "Discover The Magic ____ That Will Bring You ____ & ____!"
667
+ msgstr ""
668
+
669
+ #: classes/class-wp-message.php:464
670
+ msgid "____ Man Reveals A Short-Cut To ____"
671
+ msgstr ""
672
+
673
+ #: classes/class-wp-message.php:465
674
+ msgid "Confessions Of A ____"
675
+ msgstr ""
676
+
677
+ #: classes/class-wp-message.php:466
678
+ msgid "Are You Ready To ____?"
679
+ msgstr ""
680
+
681
+ #: classes/class-wp-message.php:467
682
+ msgid "An Open Letter To Everyone Who ____ More Than ____ Per ____"
683
+ msgstr ""
684
+
685
+ #: classes/class-wp-message.php:468
686
+ msgid "An Amazing ____ You Can Carry In Your ____"
687
+ msgstr ""
688
+
689
+ #: classes/class-wp-message.php:469
690
+ msgid "21 Secret ____ that will ____... NOW!"
691
+ msgstr ""
692
+
693
+ #: icegram-includes/class-icegram-upgrade.php:360
694
+ msgid "Send"
695
+ msgstr ""
696
+
697
+ #: icegram-includes/class-icegram-upgrade.php:385
698
+ msgid "Submit your query"
699
+ msgstr ""
700
+
701
+ #: icegram-includes/class-icegram-upgrade.php:385
702
+ msgid "Support"
703
+ msgstr ""
704
+
705
+ #: icegram-includes/class-icegram-upgrade.php:387
706
+ msgid "Documentation"
707
+ msgstr ""
708
+
709
+ #: icegram-includes/class-icegram-upgrade.php:387
710
+ msgid "Docs"
711
+ msgstr ""
712
+
713
+ #: icegram.php:98
714
+ msgid "Docs & Support"
715
+ msgstr ""
716
+
717
+ #: icegram.php:175
718
+ msgid "Powered by Icegram"
719
+ msgstr ""
720
+
721
+ #: icegram.php:409
722
+ msgid "Campaign"
723
+ msgstr ""
724
+
725
+ #: icegram.php:410 icegram.php:411
726
+ msgid "Add New Campaign"
727
+ msgstr ""
728
+
729
+ #: icegram.php:412
730
+ msgid "Edit Campaign"
731
+ msgstr ""
732
+
733
+ #: icegram.php:413
734
+ msgid "New Campaign"
735
+ msgstr ""
736
+
737
+ #: icegram.php:415
738
+ msgid "View Campaign"
739
+ msgstr ""
740
+
741
+ #: icegram.php:416
742
+ msgid "Search Campaigns"
743
+ msgstr ""
744
+
745
+ #: icegram.php:417
746
+ msgid "No campaigns found"
747
+ msgstr ""
748
+
749
+ #: icegram.php:418
750
+ msgid "No campaigns found in Trash"
751
+ msgstr ""
752
+
753
+ #. #-#-#-#-# plugin.pot (Icegram 1.1) #-#-#-#-#
754
+ #. Plugin Name of the plugin/theme
755
+ #. #-#-#-#-# plugin.pot (Icegram 1.1) #-#-#-#-#
756
+ #. Author of the plugin/theme
757
+ #: icegram.php:420
758
+ msgid "Icegram"
759
+ msgstr ""
760
+
761
+ #: icegram.php:447
762
+ msgid "Create New"
763
+ msgstr ""
764
+
765
+ #: icegram.php:448
766
+ msgid "Create New Message"
767
+ msgstr ""
768
+
769
+ #: icegram.php:450
770
+ msgid "New Message"
771
+ msgstr ""
772
+
773
+ #: icegram.php:452
774
+ msgid "View Message"
775
+ msgstr ""
776
+
777
+ #: icegram.php:453
778
+ msgid "Search Messages"
779
+ msgstr ""
780
+
781
+ #: icegram.php:454
782
+ msgid "No messages found"
783
+ msgstr ""
784
+
785
+ #: icegram.php:455
786
+ msgid "No messages found in Trash"
787
+ msgstr ""
788
+
789
+ #. #-#-#-#-# plugin.pot (Icegram 1.1) #-#-#-#-#
790
+ #. Plugin URI of the plugin/theme
791
+ #. #-#-#-#-# plugin.pot (Icegram 1.1) #-#-#-#-#
792
+ #. Author URI of the plugin/theme
793
+ msgid "http://www.icegram.com/"
794
+ msgstr ""
795
+
796
+ #. Description of the plugin/theme
797
+ msgid ""
798
+ "All in one solution to inspire, convert and engage your audiences. Action "
799
+ "bars, Popup windows, Messengers, Toast notifications and more. Awesome "
800
+ "themes and powerful rules."
801
+ msgstr ""
trunk/message-types/action-bar/default.css ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/action-bar/main.js ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/action-bar/main.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ if ( class_exists( 'Icegram_Message_Type_Action_Bar' ) ) return;
4
+
5
+ /**
6
+ * Class Icegram Action Bar
7
+ */
8
+ class Icegram_Message_Type_Action_Bar extends Icegram_Message_Type {
9
+
10
+ function __construct() {
11
+ parent::__construct( dirname( __FILE__ ), plugins_url( '/', __FILE__ ) );
12
+ add_filter( 'icegram_message_type_params_action-bar', array( $this, 'set_admin_style' ) );
13
+ }
14
+
15
+ function define_settings() {
16
+ parent::define_settings();
17
+ $this->settings['position']['values'] = array( '01', '21' );
18
+ $this->settings['position']['default'] = '01';
19
+ $this->settings['form_layout']['values'] = array( 'left', 'right', 'bottom', 'inline' );
20
+ $this->settings['form_layout']['default'] = 'bottom';
21
+ $this->settings['theme']['default'] = 'hello';
22
+ $this->settings['bg_color']['default'] = ''; //#eb593c
23
+ $this->settings['text_color']['default'] = ''; //#ffffff
24
+ unset ($this->settings['icon']
25
+ );
26
+ }
27
+
28
+ function set_admin_style( $params ) {
29
+
30
+ $params['admin_style'] = array( 'label_bg_color' => '#DF6B00',
31
+ 'theme_header_height' => '6em',
32
+ 'thumbnail_width' => '92%',
33
+ 'thumbnail_height' => '4.5em'
34
+ );
35
+ return $params;
36
+ }
37
+ }
trunk/message-types/action-bar/themes/action-bar.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ig_action_bar.ig_air-mail.ig_container{border-style:solid;color:#707070;-moz-border-image:-moz-repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;-webkit-border-image:-webkit-repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;-o-border-image:-o-repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;border-image:repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;background-color:#fdfdfd}.ig_action_bar.ig_air-mail.ig_container.ig_top{border-width:0 0 8px}.ig_action_bar.ig_air-mail.ig_container.ig_bottom{border-width:8px 0 0}.ig_action_bar.ig_air-mail .ig_data{max-width:75%;float:left;text-align:left}.ig_action_bar.ig_air-mail .ig_headline{color:#2C4A9D}.ig_action_bar.ig_air-mail .ig_headline,.ig_action_bar.ig_air-mail .ig_message{display:block}.ig_action_bar.ig_air-mail .ig_button,.ig_action_bar.ig_air-mail input[type=submit],.ig_action_bar.ig_air-mail input[type=button]{float:right;background:#D82931;text-transform:uppercase;font-family:"Open Sans",sans-serif;font-weight:600;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;border:none}.ig_action_bar.ig_air-mail .ig_button:hover,.ig_action_bar.ig_air-mail input[type=submit]:hover,.ig_action_bar.ig_air-mail input[type=button]:hover{-webkit-box-shadow:0 0 4px 0 rgba(0,0,0,.5);box-shadow:0 0 4px 0 rgba(0,0,0,.5)}.ig_action_bar.ig_air-mail .ig_button:active,.ig_action_bar.ig_air-mail input[type=submit]:active,.ig_action_bar.ig_air-mail input[type=button]:active{-webkit-box-shadow:none;box-shadow:none}.ig_action_bar.ig_air-mail .ig_close{top:0}.ig_action_bar.ig_air-mail.ig_show.ig_bottom .ig_close>span,.ig_action_bar.ig_air-mail.ig_show.ig_top .ig_close>span{background-position:-520px center;opacity:.4}.ig_action_bar.ig_air-mail.ig_show.ig_bottom .ig_close:hover>span,.ig_action_bar.ig_air-mail.ig_show.ig_top .ig_close:hover>span{background-position:-520px center;opacity:.8}.ig_action_bar.ig_air-mail.ig_hide .ig_close{display:none}.ig_action_bar.ig_form_bottom.ig_air-mail .ig_form_container.layout_bottom .ig_embed_form_container,.ig_action_bar.ig_form_bottom.ig_air-mail .ig_form_container.layout_bottom .ig_form_footer,.ig_action_bar.ig_form_bottom.ig_air-mail .ig_form_container.layout_bottom .ig_form_header,.ig_action_bar.ig_form_inline.ig_air-mail .ig_form_container.layout_inline .ig_embed_form_container,.ig_action_bar.ig_form_inline.ig_air-mail .ig_form_container.layout_inline .ig_form_footer,.ig_action_bar.ig_form_inline.ig_air-mail .ig_form_container.layout_inline .ig_form_header{text-align:left}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_action_bar.ig_air-mail.ig_form_bottom .ig_data,.ig_action_bar.ig_air-mail.ig_form_left .ig_data,.ig_action_bar.ig_air-mail.ig_form_right .ig_data{width:100%;max-width:100%!important}.ig_action_bar.ig_air-mail .ig_button,.ig_action_bar.ig_air-mail input[type=submit],.ig_action_bar.ig_air-mail input[type=button]{float:left;margin:.3em 0 .3em .7em}.ig_action_bar.ig_air-mail.ig_has_pwby .ig_button,.ig_action_bar.ig_air-mail.ig_has_pwby input[type=submit],.ig_action_bar.ig_air-mail.ig_has_pwby input[type=button]{margin-left:2.5em}.ig_action_bar.ig_air-mail.ig_has_pwby .ig_form_container .ig_button{margin:0}}.ig_action_bar.ig_bold.ig_container{background-color:#BC0933;color:#FFF;border-bottom:solid .2em #F3EEEE;-moz-box-shadow:0 0 .6em 0 rgba(0,0,0,.4);-webkit-box-shadow:0 0 .6em 0 rgba(0,0,0,.4);box-shadow:0 0 .6em 0 rgba(0,0,0,.4)}.ig_action_bar.ig_bold.ig_container.ig_bottom{border-bottom:none;border-top:solid .2em #F3EEEE}.ig_action_bar.ig_bold .ig_data{max-width:75%;float:left;text-align:left}.ig_action_bar.ig_bold .ig_headline,.ig_action_bar.ig_bold .ig_message{display:block}.ig_action_bar.ig_bold .ig_button,.ig_action_bar.ig_bold input[type=submit],.ig_action_bar.ig_bold input[type=button]{float:right;background:#00BB58;-moz-border-radius:.2em;-webkit-border-radius:.2em;border-radius:.2em;-moz-box-shadow:inset 0 -3px 1px rgba(0,0,0,.35),0 2px 2px rgba(0,0,0,.25);-webkit-box-shadow:inset 0 -3px 1px rgba(0,0,0,.35),0 2px 2px rgba(0,0,0,.25);box-shadow:inset 0 -3px 1px rgba(0,0,0,.35),0 2px 2px rgba(0,0,0,.25);text-shadow:0 0 1px rgba(0,0,0,.1)}.ig_action_bar.ig_bold .ig_button:active,.ig_action_bar.ig_bold input[type=submit]:active,.ig_action_bar.ig_bold input[type=button]:active{position:relative;top:3px;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ig_action_bar.ig_bold.ig_hide .ig_close{background-color:#BC0933;border:.2em solid #FFF;border-bottom-width:0;-moz-box-shadow:0 0 .3em rgba(0,0,0,.35);-webkit-box-shadow:0 0 .3em rgba(0,0,0,.35);box-shadow:0 0 .3em rgba(0,0,0,.35);-moz-border-radius:.3em .3em 0 0;-webkit-border-radius:.3em .3em 0 0;border-radius:.3em .3em 0 0}.ig_action_bar.ig_bold.ig_hide.ig_top .ig_close{margin-top:.15em;border-bottom-width:.2em;border-top-width:0;-moz-border-radius:0 0 .3em .3em;-webkit-border-radius:0 0 .3em .3em;border-radius:0 0 .3em .3em}.ig_action_bar.ig_bold.ig_hide.ig_bottom .ig_close{margin-bottom:.15em}.ig_action_bar.ig_form_bottom.ig_bold .ig_form_container.layout_bottom .ig_embed_form_container,.ig_action_bar.ig_form_bottom.ig_bold .ig_form_container.layout_bottom .ig_form_footer,.ig_action_bar.ig_form_bottom.ig_bold .ig_form_container.layout_bottom .ig_form_header,.ig_action_bar.ig_form_inline.ig_bold .ig_form_container.layout_inline .ig_embed_form_container,.ig_action_bar.ig_form_inline.ig_bold .ig_form_container.layout_inline .ig_form_footer,.ig_action_bar.ig_form_inline.ig_bold .ig_form_container.layout_inline .ig_form_header{text-align:left}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_action_bar.ig_bold.ig_form_bottom .ig_data,.ig_action_bar.ig_bold.ig_form_left .ig_data,.ig_action_bar.ig_bold.ig_form_right .ig_data{width:100%;max-width:100%!important}.ig_action_bar.ig_bold .ig_button,.ig_action_bar.ig_bold input[type=submit],.ig_action_bar.ig_bold input[type=button]{float:left;margin:.3em 0 .3em .7em}.ig_action_bar.ig_bold.ig_has_pwby .ig_button,.ig_action_bar.ig_bold.ig_has_pwby input[type=submit],.ig_action_bar.ig_bold.ig_has_pwby input[type=button]{margin-left:2.5em}.ig_action_bar.ig_bold.ig_has_pwby .ig_form_container .ig_button{margin:0}}#ig_body_pushdown{display:none;position:relative;height:0;visibility:hidden;width:100%}.ig_action_bar,.ig_action_bar div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ig_action_bar.ig_container{z-index:9999999;position:fixed;width:100%;padding:0;margin:0;display:none;left:0;line-height:1.5}.ig_action_bar.ig_container.ig_top{top:0}.ig_action_bar.ig_container.ig_bottom{position:fixed;bottom:0}.ig_action_bar.ig_hide.ig_bottom{-ms-transform:translateY(100%);-webkit-transform:translateY(100%);transform:translateY(100%)}.ig_action_bar.ig_hide.ig_top{-ms-transform:translateY(-100%);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.ig_action_bar .ig_content{float:left;text-align:center;width:100%;padding:0 2.5em 0 0}.ig_action_bar .ig_data{text-align:center;padding:.3em 1em .3em .7em;display:inline-block;line-height:1.5;vertical-align:middle;margin:0}.ig_action_bar.ig_has_pwby .ig_data{padding-left:2.5em}.ig_action_bar .ig_headline{display:inline-block;font-size:1em;line-height:1.25;font-weight:700;padding:0}.ig_action_bar .ig_message{display:inline-block;font-size:.85em;line-height:1.2;padding:.2em 0 0}.ig_action_bar .ig_button,.ig_action_bar input[type=submit],.ig_action_bar input[type=button]{border:none;color:#FFF;cursor:pointer;display:inline-block;font-size:1em;font-weight:700;letter-spacing:.05em;vertical-align:middle;text-align:center;padding:.3em 1.5em;margin:.5em 0;float:none;background-image:none}.ig_action_bar .ig_powered_by{vertical-align:top;opacity:.5;display:inline-block;float:left;z-index:22;position:absolute;margin-top:0}.ig_action_bar .ig_powered_by img{width:1.5em;margin:.3em 0 0 .5em}.ig_action_bar .ig_close{z-index:1000000;cursor:pointer;position:absolute;right:0;width:36px;height:36px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ig_action_bar .ig_close>span{background-image:url(../../../assets/images/sprite_1.png);background-repeat:no-repeat;width:30px;height:100%;opacity:.7;display:inline-block}.ig_action_bar .ig_close:hover>span{opacity:1}.ig_action_bar.ig_show .ig_close{background-color:transparent!important}.ig_action_bar.ig_hide .ig_close{position:fixed;border:none;right:.2em}.ig_action_bar.ig_hide.ig_top .ig_close{top:100%}.ig_action_bar.ig_hide.ig_bottom .ig_close{bottom:100%}.ig_action_bar.ig_hide.ig_bottom .ig_close>span,.ig_action_bar.ig_show.ig_top .ig_close>span{background-position:-80px center}.ig_action_bar.ig_hide.ig_top .ig_close>span,.ig_action_bar.ig_show.ig_bottom .ig_close>span{background-position:-120px center}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_action_bar .ig_content{padding-right:0}.ig_action_bar .ig_data{max-width:100%!important;width:100%;padding-right:2.5em}.ig_action_bar .ig_button,.ig_action_bar input[type=submit],.ig_action_bar input[type=button]{max-width:100%;margin:.3em 0}.ig_action_bar.ig_show .ig_close{top:initial}}@media only screen and (min-device-width:320px) and (max-device-width:359px){.ig_action_bar{font-size:14px}}@media only screen and (min-device-width:360px) and (max-device-width:413px){.ig_action_bar{font-size:17px}}@media only screen and (min-device-width:414px) and (max-device-width:643px){.ig_action_bar{font-size:19px}}@media only screen and (min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_action_bar{font-size:19px}}@media only screen and (min-width:768px) and (max-device-width:992px){.ig_action_bar{font-size:18px}}.ig_action_bar .ig_form_container{width:20%;float:left}.ig_action_bar.ig_form_bottom .ig_content,.ig_action_bar.ig_form_inline .ig_content,.ig_action_bar.ig_form_left .ig_content,.ig_action_bar.ig_form_right .ig_content{padding:0}.ig_action_bar.ig_form_left .ig_data,.ig_action_bar.ig_form_right .ig_data{width:79%;max-width:79%!important;float:left}.ig_action_bar.ig_form_left.ig_has_pwby .ig_data{width:79%;max-width:79%!important;padding-left:1em}.ig_action_bar.ig_form_bottom.ig_has_pwby .ig_form_container.layout_bottom,.ig_action_bar.ig_form_left.ig_has_pwby .ig_form_container.layout_left{padding-left:2.5em}.ig_action_bar.ig_form_bottom .ig_data{float:left}.ig_action_bar.ig_form_bottom .ig_data,.ig_action_bar.ig_form_inline .ig_data{max-width:100%!important;width:100%;padding-right:2.5em}.ig_action_bar.ig_form_right .ig_form_container.layout_right{float:right;padding-right:2.5em}.ig_action_bar.ig_form_bottom .ig_form_container.layout_bottom{padding-right:2.5em}.ig_action_bar.ig_form_inline .ig_form_container.layout_inline{padding-right:0}.ig_action_bar.ig_form_bottom .ig_form_container.layout_bottom .ig_embed_form_container,.ig_action_bar.ig_form_bottom .ig_form_container.layout_bottom .ig_form_footer,.ig_action_bar.ig_form_bottom .ig_form_container.layout_bottom .ig_form_header,.ig_action_bar.ig_form_inline .ig_form_container.layout_inline .ig_embed_form_container,.ig_action_bar.ig_form_inline .ig_form_container.layout_inline .ig_form_footer,.ig_action_bar.ig_form_inline .ig_form_container.layout_inline .ig_form_header{text-align:center}.ig_action_bar.ig_form_left.ig_form_style_4 .ig_data{padding-left:2em}.ig_action_bar.ig_form_right.ig_form_style_4 .ig_data{padding-right:2em}.ig_action_bar.ig_form_bottom.ig_form_style_4 .ig_form_container.layout_bottom{padding-top:0;padding-bottom:0;margin-top:1em}.ig_action_bar.ig_form_style_4.ig_hide .ig_form_container:before{display:none}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_action_bar.ig_form_left .ig_form_container.layout_left,.ig_action_bar.ig_form_right .ig_form_container.layout_right{display:none}.ig_action_bar.ig_form_bottom .ig_form_container.layout_bottom,.ig_action_bar.ig_form_left .ig_form_container.layout_bottom,.ig_action_bar.ig_form_right .ig_form_container.layout_bottom{display:block;width:100%;padding:.7em 1em;height:auto!important}.ig_action_bar.ig_form_bottom .ig_data,.ig_action_bar.ig_form_left .ig_data,.ig_action_bar.ig_form_right .ig_data{width:100%;max-width:100%!important;padding-right:2.3em}.ig_action_bar.ig_form_left.ig_has_pwby .ig_data,.ig_action_bar.ig_form_right.ig_has_pwby .ig_data{padding-left:2.3em}.ig_action_bar .ig_form_container .ig_embed_form_container{width:80%;margin:0 auto}.ig_action_bar .ig_form_container .ig_embed_form_container.ig_half,.ig_action_bar.ig_form_inline .ig_form_container .ig_embed_form_container{width:100%}.ig_action_bar .ig_form_container.layout_bottom .ig_full .ig_form_els,.ig_action_bar .ig_form_container.layout_bottom .ig_half .ig_form_els,.ig_action_bar .ig_form_container.layout_bottom .ig_quater .ig_form_els,.ig_action_bar .ig_form_container.layout_bottom .ig_third .ig_form_els,.ig_action_bar .ig_form_container.layout_inline .ig_full .ig_form_els,.ig_action_bar .ig_form_container.layout_inline .ig_half .ig_form_els,.ig_action_bar .ig_form_container.layout_inline .ig_quater .ig_form_els,.ig_action_bar .ig_form_container.layout_inline .ig_third .ig_form_els{width:99%;display:inline-block;float:left;margin:.25em auto}.ig_action_bar .ig_form_container.layout_bottom .ig_half .ig_form_els,.ig_action_bar .ig_form_container.layout_inline .ig_half .ig_form_els{width:49%}.ig_action_bar .ig_form_container.layout_bottom .ig_full .ig_button_label,.ig_action_bar .ig_form_container.layout_bottom .ig_half .ig_button_label,.ig_action_bar .ig_form_container.layout_bottom .ig_quater .ig_button_label,.ig_action_bar .ig_form_container.layout_bottom .ig_third .ig_button_label,.ig_action_bar .ig_form_container.layout_inline .ig_full .ig_button_label,.ig_action_bar .ig_form_container.layout_inline .ig_half .ig_button_label,.ig_action_bar .ig_form_container.layout_inline .ig_quater .ig_button_label,.ig_action_bar .ig_form_container.layout_inline .ig_third .ig_button_label{display:none}.ig_action_bar .ig_form_container.layout_bottom .ig_half .ig_button_label,.ig_action_bar .ig_form_container.layout_inline .ig_half .ig_button_label{display:block;visibility:hidden;opacity:0}.ig_action_bar .ig_form_container.layout_bottom .ig_button,.ig_action_bar .ig_form_container.layout_bottom input[type=submit],.ig_action_bar .ig_form_container.layout_bottom input[type=button],.ig_action_bar .ig_form_container.layout_inline .ig_button,.ig_action_bar .ig_form_container.layout_inline input[type=submit],.ig_action_bar .ig_form_container.layout_inline input[type=button]{margin:0 auto}.ig_action_bar.ig_form_left.ig_form_style_1 .ig_form_container.layout_bottom:before,.ig_action_bar.ig_form_right.ig_form_style_1 .ig_form_container.layout_bottom:before{width:100%;border-top-width:.2em}.ig_action_bar.ig_form_bottom.ig_form_style_1 .ig_form_container.layout_bottom:before{border-top-width:.2em}.ig_action_bar.ig_form_style_2 .ig_form_container .ig_form_els{margin-right:0;margin-left:0}.ig_action_bar.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els input,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_first input,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_last input,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els input,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first input,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_last input{-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em;padding-left:1em;height:2.25em;line-height:2.2em}.ig_action_bar.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els input.ig_button,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els input.ig_button{padding:inherit}.ig_action_bar.ig_form_left.ig_form_style_4 .ig_data,.ig_action_bar.ig_form_style_2 .ig_form_container .ig_half .ig_form_els.ig_form_els_first label,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els label,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_first label,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_last label,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els label,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first label,.ig_action_bar.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_last label{padding-left:1em}.ig_action_bar.ig_form_style_2 .ig_form_container .ig_half .ig_form_els.ig_form_els_first input{-webkit-border-radius:2em 0 0 2em;-moz-border-radius:2em 0 0 2em;border-radius:2em 0 0 2em;padding-left:1em;border-right-width:0}.ig_action_bar.ig_form_style_2 .ig_form_container .ig_half .ig_form_els.ig_form_els_last input{-webkit-border-radius:0 2em 2em 0;-moz-border-radius:0 2em 2em 0;border-radius:0 2em 2em 0;border-left-width:0}.ig_action_bar.ig_form_style_2 .ig_form_container .ig_half .ig_form_els .ig_button,.ig_action_bar.ig_form_style_2 .ig_form_container .ig_half .ig_form_els input{width:100%}.ig_action_bar.ig_form_right.ig_form_style_4 .ig_data{padding-right:2.5em}.ig_action_bar.ig_form_left.ig_form_style_4 .ig_form_container,.ig_action_bar.ig_form_right.ig_form_style_4 .ig_form_container{margin-top:1em}.ig_action_bar.ig_form_bottom.ig_form_style_4 .ig_form_container,.ig_action_bar.ig_form_left.ig_form_style_4 .ig_form_container,.ig_action_bar.ig_form_right.ig_form_style_4 .ig_form_container{padding-top:0;padding-bottom:0}}.ig_action_bar.ig_hello.ig_container{background-color:#EB5B31;color:#FFF;line-height:1.5;border-bottom:.2em solid #fff;-moz-box-shadow:0 0 .6em 0 rgba(0,0,0,.4);-webkit-box-shadow:0 0 .6em 0 rgba(0,0,0,.4);box-shadow:0 0 .6em 0 rgba(0,0,0,.4)}.ig_action_bar.ig_hello.ig_container.ig_bottom{border-bottom:none;border-top:.2em solid #fff}.ig_action_bar.ig_hello .ig_headline{font-weight:700;margin-right:.5em}.ig_action_bar.ig_hello .ig_message{margin-right:.5em}.ig_action_bar.ig_hello .ig_button,.ig_action_bar.ig_hello input[type=submit],.ig_action_bar.ig_hello input[type=button]{background-color:#4A4844;background-image:-moz-linear-gradient(top,transparent 0,rgba(51,51,51,.4) 100%);background-image:-o-linear-gradient(top,transparent 0,rgba(51,51,51,.4) 100%);background-image:-webkit-linear-gradient(top,transparent 0,rgba(51,51,51,.4) 100%);background-image:linear-gradient(top,transparent 0,rgba(51,51,51,.4) 100%);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.28);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.28);box-shadow:1px 1px 3px rgba(0,0,0,.28);font-weight:400;-moz-border-radius:.25em;-webkit-border-radius:.25em;border-radius:.25em;float:none;padding:.2em 1.3em}.ig_action_bar.ig_hello .ig_button:hover,.ig_action_bar.ig_hello input[type=submit]:hover,.ig_action_bar.ig_hello input[type=button]:hover{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80);opacity:.8}.ig_action_bar.ig_hello.ig_hide .ig_close{background-color:#EB5B31;border:.2em solid #FFF;border-bottom-width:0;-moz-border-radius:.3em .3em 0 0;-webkit-border-radius:.3em .3em 0 0;border-radius:.3em .3em 0 0;-moz-box-shadow:0 0 .3em rgba(0,0,0,.35);-webkit-box-shadow:0 0 .3em rgba(0,0,0,.35);box-shadow:0 0 .3em rgba(0,0,0,.35)}.ig_action_bar.ig_hello.ig_hide.ig_top .ig_close{margin-top:.15em;border-bottom-width:.2em;border-top-width:0;-moz-border-radius:0 0 .3em .3em;-webkit-border-radius:0 0 .3em .3em;border-radius:0 0 .3em .3em}.ig_action_bar.ig_hello.ig_hide.ig_bottom .ig_close{margin-bottom:.15em}.ig_action_bar.ig_form_inline.ig_hello .ig_form_container.layout_inline{padding:.2em}.ig_action_bar.ig_form_inline.ig_hello .ig_headline{vertical-align:middle;margin-right:.5em}.ig_action_bar.ig_form_inline.ig_hello .ig_message{vertical-align:middle}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_action_bar.ig_hello.ig_form_bottom .ig_data,.ig_action_bar.ig_hello.ig_form_left .ig_data,.ig_action_bar.ig_hello.ig_form_right .ig_data{width:100%;max-width:100%!important}}.ig_action_bar.ig_solid.ig_container{background-color:#4E3363;color:#FFF}.ig_action_bar.ig_solid .ig_data{max-width:75%;float:left;text-align:left}.ig_action_bar.ig_solid .ig_headline,.ig_action_bar.ig_solid .ig_message{display:block}.ig_action_bar.ig_solid .ig_button,.ig_action_bar.ig_solid input[type=submit],.ig_action_bar.ig_solid input[type=button]{background:#008010;float:right;-moz-border-radius:.1em;-webkit-border-radius:.1em;border-radius:.1em}.ig_action_bar.ig_solid .ig_button:hover,.ig_action_bar.ig_solid input[type=submit]:hover,.ig_action_bar.ig_solid input[type=button]:hover{-moz-box-shadow:inset 0 -4em 0 rgba(255,255,255,.15);-webkit-box-shadow:inset 0 -4em 0 rgba(255,255,255,.15);box-shadow:inset 0 -4em 0 rgba(255,255,255,.15)}.ig_action_bar.ig_solid.ig_hide .ig_close{background-color:#4E3363}.ig_action_bar.ig_form_bottom.ig_solid .ig_form_container.layout_bottom .ig_embed_form_container,.ig_action_bar.ig_form_bottom.ig_solid .ig_form_container.layout_bottom .ig_form_footer,.ig_action_bar.ig_form_bottom.ig_solid .ig_form_container.layout_bottom .ig_form_header,.ig_action_bar.ig_form_inline.ig_solid .ig_form_container.layout_inline .ig_embed_form_container,.ig_action_bar.ig_form_inline.ig_solid .ig_form_container.layout_inline .ig_form_footer,.ig_action_bar.ig_form_inline.ig_solid .ig_form_container.layout_inline .ig_form_header{text-align:left}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_action_bar.ig_solid.ig_form_bottom .ig_data,.ig_action_bar.ig_solid.ig_form_left .ig_data,.ig_action_bar.ig_solid.ig_form_right .ig_data{width:100%;max-width:100%!important}.ig_action_bar.ig_solid .ig_button,.ig_action_bar.ig_solid input[type=submit],.ig_action_bar.ig_solid input[type=button]{float:left;margin:.3em 0 .3em .7em}.ig_action_bar.ig_solid.ig_has_pwby .ig_button,.ig_action_bar.ig_solid.ig_has_pwby input[type=submit],.ig_action_bar.ig_solid.ig_has_pwby input[type=button]{margin-left:2.5em}.ig_action_bar.ig_solid.ig_has_pwby .ig_form_container .ig_button{margin:0}}
trunk/message-types/action-bar/themes/air-mail.png ADDED
Binary file
trunk/message-types/action-bar/themes/bold.png ADDED
Binary file
trunk/message-types/action-bar/themes/hello.png ADDED
Binary file
trunk/message-types/action-bar/themes/solid.png ADDED
Binary file
trunk/message-types/messenger/default.css ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/messenger/main.js ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/messenger/main.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ if ( class_exists( 'Icegram_Message_Type_Messenger' ) ) return;
4
+
5
+ /**
6
+ * Class Icegram Messenger
7
+ */
8
+ class Icegram_Message_Type_Messenger extends Icegram_Message_Type {
9
+
10
+ function __construct() {
11
+ parent::__construct( dirname( __FILE__ ), plugins_url( '/', __FILE__ ) );
12
+ add_filter( 'icegram_message_type_params_messenger', array( $this, 'set_admin_style' ) );
13
+
14
+ }
15
+
16
+ function define_settings() {
17
+ parent::define_settings();
18
+ $this->settings['position']['values'] = array( '20', '22' );
19
+ $this->settings['position']['default'] = '22';
20
+ $this->settings['theme']['default'] = 'social';
21
+ $this->settings['form_layout']['values'] = array('inline' ); // May be 'bottom'
22
+ $this->settings['form_layout']['default'] = 'inline';
23
+ unset ( $this->settings['text_color'],
24
+ $this->settings['bg_color'],
25
+ $this->settings['label']
26
+ );
27
+ }
28
+
29
+ function set_admin_style( $params ) {
30
+
31
+ $params['admin_style'] = array( 'label_bg_color' => '#883EB0',
32
+ 'theme_header_height' => '7em',
33
+ 'thumbnail_width' => '27.6%',
34
+ 'thumbnail_height' => '13.6em'
35
+ );
36
+ return $params;
37
+ }
38
+ }
trunk/message-types/messenger/themes/canvas.png ADDED
Binary file
trunk/message-types/messenger/themes/clear.png ADDED
Binary file
trunk/message-types/messenger/themes/messenger.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ig_messenger.ig_canvas.ig_container{max-width:33%}.ig_messenger.ig_canvas .ig_content{border:1px solid #BFBFBF;margin:.6em .6em .1em;padding:.6em;overflow:hidden;-webkit-box-shadow:0 .15em .35em 0 rgba(0,0,0,.135);-moz-box-shadow:0 .15em .35em 0 rgba(0,0,0,.135);box-shadow:0 .15em .35em 0 rgba(0,0,0,.13);background-color:#FFF!important}.ig_messenger.ig_canvas .ig_headline{color:#111;width:100%;font-size:1.5em;line-height:1em;padding:0 1em .1em .2em}.ig_messenger.ig_canvas .ig_body{max-height:21em;overflow-y:auto;padding:0 .5em;margin-top:.5em;line-height:1.3em}.ig_messenger.ig_canvas .ig_icon{float:right;position:relative;border-radius:5%;max-width:6em;margin:.3em;height:auto!important;width:auto!important}.ig_messenger.ig_canvas .ig_message{color:#444;display:inline}.ig_messenger.ig_canvas .ig_close{right:0;top:.5em}.ig_messenger.ig_canvas .ig_powered_by{bottom:0;padding-left:1em;text-align:left}@media only screen and (max-device-width:319px){.ig_messenger.ig_canvas.ig_container{max-width:75%}}@media only screen and (min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px){.ig_messenger.ig_canvas.ig_container{max-width:90%}}@media only screen and (min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_messenger.ig_canvas.ig_container{max-width:70%}}@media only screen and (min-device-width:644px) and (max-device-width:767px) and (orientation :landscape),(min-width:768px) and (max-device-width:992px){.ig_messenger.ig_canvas.ig_container{max-width:50%}}.ig_messenger.ig_clear.ig_container{font-size:13px;width:19.25em;height:20.75em;-moz-border-radius:.23em .23em 0 0;-webkit-border-radius:.23em .23em 0 0;border-radius:.23em .23em 0 0;border:1px solid #BFBFBF}.ig_messenger.ig_clear .ig_headline:after,.ig_messenger.ig_clear .ig_headline:before{background-size:cover}.ig_messenger.ig_clear .ig_headline:before{display:block;background-image:url(../../../assets/images/clear-header.png);top:.6em;left:.6em;height:1.25em;width:1.25em}.ig_messenger.ig_clear .ig_headline{background:#F9F9F9;color:#333;width:100%;height:2.38em;line-height:2.58em;font-size:1em;padding:0 2.9em 0 2em;border-bottom:1px solid #BFBFBF;-moz-box-shadow:inset 0 0 .25em 0 #FFF;-webkit-box-shadow:inset 0 0 .25em 0 #FFF;box-shadow:inset 0 0 .25em 0 #FFF}.ig_messenger.ig_clear .ig_headline:after{display:block;height:2.12em;top:2.38em;background-image:url(../../../assets/images/clear-option.png)}.ig_messenger.ig_clear .ig_body{background:#FFF;color:#222;font-size:1em;font-family:Arial,Helvetica,sans-serif;position:relative;height:13.35em;top:2.12em;border-top:1px solid #BFBFBF;right:0;line-height:1.25em;padding:.5em .9em 0 .5em;-moz-box-shadow:inset 0 0 .25em 0 #FFF;-webkit-box-shadow:inset 0 0 .25em 0 #FFF;box-shadow:inset 0 0 .25em 0 #FFF}.ig_messenger.ig_clear .ig_message{color:#3E454C;width:100%;padding-left:3em}.ig_messenger.ig_clear.ig_no_icon .ig_message{padding-left:.5em}.ig_messenger.ig_clear .ig_footer{display:block;background-color:inherit;height:2.76em;margin-top:2.12em;border-top:1px solid #BFBFBF;background-image:url(../../../assets/images/clear-footer.png);background-size:cover}.ig_messenger.ig_clear .ig_close{top:.3em;right:0}.ig_messenger.ig_clear .ig_close:before{display:block;background-image:url(../../../assets/images/clear-header.png);background-position:0 -181px;top:6px;height:13px;width:13px;padding:0;right:1.7em}.ig_messenger.ig_clear .ig_powered_by{bottom:1.8em;padding-right:3em;font-size:.8em}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait),(min-device-width:644px) and (max-device-width:767px) and (orientation :landscape),(min-width:768px) and (max-device-width:992px){.ig_messenger.ig_clear.ig_container{font-size:14px}}.ig_messenger .ig_body,.ig_messenger .ig_headline{-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis}.ig_messenger.ig_container{display:none;position:fixed;cursor:pointer;background-color:transparent!important;z-index:100000;margin:0;padding:0;font-family:"Lucida Grande",Arial,sans-serif;font-size:16px;overflow:hidden;text-align:left;bottom:.2em}.ig_messenger.ig_container,.ig_messenger.ig_container div{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.ig_messenger.ig_container.ig_left{left:.2em}.ig_messenger.ig_container.ig_right{right:.2em}.ig_messenger .ig_content,.ig_messenger .ig_data{background:0 0!important;position:relative}.ig_messenger .ig_close:after,.ig_messenger .ig_close:before,.ig_messenger .ig_content:before,.ig_messenger .ig_data:after,.ig_messenger .ig_footer:after,.ig_messenger .ig_headline:after,.ig_messenger .ig_headline:before,.ig_messenger .ig_message:after,.ig_messenger .ig_message:before{content:'';position:absolute;display:none;padding:0;width:100%;z-index:10;background-position:0 0;background-repeat:no-repeat;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.ig_messenger .ig_headline{display:block!important;font-weight:700;text-decoration:none;overflow:hidden;white-space:nowrap}.ig_messenger .ig_headline:after{left:0}.ig_messenger .ig_body{overflow-x:hidden;display:block;border-bottom:none;z-index:9}.ig_messenger .ig_footer,.ig_messenger.ig_no_icon .ig_icon{display:none}.ig_messenger .ig_icon{height:2.5em;width:2.5em;position:absolute}.ig_messenger .ig_message{text-align:left;word-wrap:break-word}.ig_messenger .ig_message p{margin-bottom:.25em}.ig_messenger .ig_powered_by{font-size:.62em;z-index:10;position:relative;text-align:right}.ig_messenger .ig_button,.ig_messenger input[type=submit],.ig_messenger input[type=button]{border-bottom:none;cursor:pointer}.ig_messenger .ig_button:active,.ig_messenger input[type=submit]:active,.ig_messenger input[type=button]:active{border-top:none}.ig_messenger .ig_close{position:absolute;z-index:10;height:25px;width:25px}.ig_messenger .ig_close:after{top:6px;left:6px;background-image:url(../../../assets/images/clear-header.png);background-repeat:no-repeat;background-position:0 -195px;display:block;height:13px;width:13px}.ig_messenger.ig_form_bottom .ig_form_container.layout_bottom,.ig_messenger.ig_form_inline .ig_form_container.layout_inline .ig_button_label,.ig_messenger.ig_form_left .ig_form_container.layout_left,.ig_messenger.ig_form_right .ig_form_container.layout_right{display:none}.ig_messenger.ig_form_inline .ig_form_container.layout_inline{float:left;padding:.5em 0}.ig_messenger.ig_form_inline .ig_message p{margin-bottom:0}.ig_messenger.ig_form_inline .ig_form_container.layout_inline .ig_full .ig_form_els,.ig_messenger.ig_form_inline .ig_form_container.layout_inline .ig_half .ig_form_els,.ig_messenger.ig_form_inline .ig_form_container.layout_inline .ig_quater .ig_form_els,.ig_messenger.ig_form_inline .ig_form_container.layout_inline .ig_third .ig_form_els{width:99%;margin:.3em auto}.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els{margin-right:0;margin-left:0}.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els input,.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first input,.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_last input{padding-left:1em;border-width:2px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els input.ig_button{padding:inherit}.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els label,.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first label,.ig_messenger.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_last label{padding-left:1em}.ig_messenger.ig_social.ig_container{font-size:11px;width:22.8em;height:23.6em}.ig_messenger.ig_social .ig_headline{background-color:#627BAE;color:#FFF;width:100%;height:2.45em;line-height:2.65em;font-size:1em;padding:0 3.4em 0 .7em;border:1px solid rgba(0,39,121,.3);border-bottom:none}.ig_messenger.ig_social .ig_body{display:block;background-color:#edeff4;color:#3e454c;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;position:relative;height:18em;border:1px solid rgba(0,0,0,.3);border-top:none;border-bottom:none;right:0;padding:5px .5em 0 3.8em}.ig_messenger.ig_social.ig_no_icon .ig_body{padding-left:.5em;line-height:1.37em}.ig_messenger.ig_social .ig_message:before{display:block;width:0;top:11px;margin:0 0 0 -18px;border:8px solid #DFDFDF;border-color:transparent #DFDFDF transparent transparent;z-index:-1}.ig_messenger.ig_social .ig_message:after{display:block;width:0;top:13px;margin:0 0 0 -15px;border:6px solid #FAFAFA;border-color:transparent #FAFAFA transparent transparent}.ig_messenger.ig_social .ig_message{background-color:#F7F7F7;color:#3E454C;background-image:-webkit-gradient(linear,center bottom,center top,from(#F2F2F2),to(#FFF));background-image:-webkit-linear-gradient(bottom,#F2F2F2,#FFF);width:90%;font-size:1.09em;padding:.3em;border:1px solid rgba(0,0,0,.18);border-bottom-color:rgba(0,0,0,.29);-webkit-border-radius:.4em;-moz-border-radius:.4em;border-radius:.4em;-webkit-box-shadow:0 1px 0 #DCE0E6;-moz-box-shadow:0 1px 0 #DCE0E6;box-shadow:0 1px 0 #DCE0E6}.ig_messenger.ig_social.ig_no_icon .ig_message{margin:0 auto .5em}.ig_messenger.ig_social.ig_no_icon .ig_message:after,.ig_messenger.ig_social.ig_no_icon .ig_message:before{display:none}.ig_messenger.ig_social .ig_icon{margin-left:-3.3em;height:2.54em;width:2.54em}.ig_messenger.ig_social .ig_footer{display:block;height:3em;background-color:#FFF;border:1px solid rgba(0,0,0,.3)}.ig_messenger.ig_social .ig_footer:after{display:block;background-image:url(../../../assets/images/social-img.png);background-position:-269px -137px;width:22px;height:18px;margin-top:.8em;right:.3em}.ig_messenger.ig_social .ig_close{background-image:url(../../../assets/images/social-img.png);background-position:-137px -332px;top:.25em;right:.15em;height:25px;width:21px}.ig_messenger.ig_social .ig_close:before{display:block;background-image:url(../../../assets/images/social-img.png);background-position:-92px -332px;height:100%;width:100%;padding:0;right:1.5em}.ig_messenger.ig_social .ig_close:after{display:none}.ig_messenger.ig_social .ig_powered_by{bottom:1.8em;padding-right:3em;font-size:.9em}@media only screen and (max-device-width:319px){.ig_messenger.ig_social.ig_container{font-size:12px;width:20em}}@media only screen and (min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait),(min-device-width:644px) and (max-device-width:767px) and (orientation :landscape),(min-width:768px) and (max-device-width:992px){.ig_messenger.ig_social.ig_container{font-size:13px}}.ig_messenger.ig_talk.ig_container{font-size:12px;width:17.5em;height:21em;border:.1em solid #BFBFBF;-moz-border-radius:.5em .5em 0 0;-webkit-border-radius:.5em .5em 0 0;border-radius:.5em .5em 0 0}.ig_messenger.ig_talk .ig_close,.ig_messenger.ig_talk .ig_close:before,.ig_messenger.ig_talk .ig_data:after,.ig_messenger.ig_talk .ig_headline:after,.ig_messenger.ig_talk .ig_headline:before{background-size:cover}.ig_messenger.ig_talk .ig_headline:before{display:block;background-image:url(../../../assets/images/clear-header.png);top:.5em;left:.6em;height:1.25em;width:1.25em}.ig_messenger.ig_talk .ig_headline{background-color:#F5FAFF;color:#00008B;width:100%;height:2.2em;line-height:2.4em;font-size:1em;padding:0 2.9em 0 2em;border-bottom:.1em solid #BFBFBF;-moz-box-shadow:inset 0 0 .25em 0 #FFF;-webkit-box-shadow:inset 0 0 .25em 0 #FFF;box-shadow:inset 0 0 .25em 0 #FFF;-moz-border-radius:.5em .5em 0 0;-webkit-border-radius:.5em .5em 0 0;border-radius:.5em .5em 0 0}.ig_messenger.ig_talk .ig_headline:after{display:block;height:2.5em;top:2.2em;background-image:url(../../../assets/images/talk-header-2.png)}.ig_messenger.ig_talk .ig_body{background:#FFF;color:#222;font-size:1em;font-family:Arial,Helvetica,sans-serif;position:relative;height:13.48em;border-top:.1em solid #BFBFBF;border-bottom:.1em solid #BFBFBF;top:2.5em;right:0;line-height:1.25em;padding:.5em .8em 0 .5em;-moz-box-shadow:inset 0 0 .25em 0 #FFF;-webkit-box-shadow:inset 0 0 .25em 0 #FFF;box-shadow:inset 0 0 .25em 0 #FFF}.ig_messenger.ig_talk .ig_message{color:#3E454C;width:100%;padding-left:3em}.ig_messenger.ig_talk.ig_no_icon .ig_message{padding-left:.5em}.ig_messenger.ig_talk .ig_footer{display:block;height:2.66em;margin-top:2.5em;background-image:url(../../../assets/images/talk-footer-1.png);background-size:cover}.ig_messenger.ig_talk .ig_close{background-image:url(../../../assets/images/talk-close.png);background-position:0 0;top:.5em;right:.33em;height:1.25em;width:1.25em;z-index:10}.ig_messenger.ig_talk .ig_close:before{display:block;background-image:url(../../../assets/images/talk-header-1.png);height:100%;width:100%;padding:0;right:1.5em}.ig_messenger.ig_talk .ig_close:after{display:none}.ig_messenger.ig_talk .ig_powered_by{bottom:2em;padding-right:2em;font-size:.8em}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait),(min-device-width:644px) and (max-device-width:767px) and (orientation :landscape),(min-width:768px) and (max-device-width:992px){.ig_messenger.ig_talk.ig_container{font-size:14px}}
trunk/message-types/messenger/themes/social.png ADDED
Binary file
trunk/message-types/messenger/themes/talk.png ADDED
Binary file
trunk/message-types/popup/default.css ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/popup/main.js ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/popup/main.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ if ( class_exists( 'Icegram_Message_Type_Popup' ) ) return;
4
+
5
+ /**
6
+ * Class Icegram Popup
7
+ */
8
+ class Icegram_Message_Type_Popup extends Icegram_Message_Type {
9
+ var $popup_default_delay_time;
10
+
11
+ function __construct() {
12
+ parent::__construct( dirname( __FILE__ ), plugins_url( '/', __FILE__ ) );
13
+ $this->popup_default_delay_time = 3;
14
+ add_filter( 'icegram_data', array( $this, 'arrange_proper_delay_time' ) , 11);
15
+ add_filter( 'icegram_message_type_params_popup', array( $this, 'set_admin_style' ) );
16
+ }
17
+
18
+ function define_settings() {
19
+ parent::define_settings();
20
+ $this->settings['theme']['default'] = 'persuade';
21
+ $this->settings['form_layout']['values'] = array( 'left', 'right', 'bottom', 'inline' );
22
+ $this->settings['form_layout']['default'] = 'left';
23
+ $this->settings['bg_color']['default'] = '';
24
+ $this->settings['text_color']['default'] = '';
25
+ unset ( $this->settings['position'],
26
+ $this->settings['icon']
27
+ );
28
+ }
29
+
30
+ function arrange_proper_delay_time( $icegram_data ) {
31
+ $popup_delay_times = array();
32
+ foreach ($icegram_data['messages'] as $message_id => $message) {
33
+
34
+ if( $message['type'] == 'popup' && $message['delay_time'] != -1) {
35
+ while( in_array( $message['delay_time'], $popup_delay_times ) ) {
36
+ $message['delay_time'] = $message['delay_time'] + $this->popup_default_delay_time;
37
+ }
38
+ $icegram_data['messages'][$message_id]['delay_time'] = $message['delay_time'];
39
+ $popup_delay_times[] = $message['delay_time'];
40
+ }
41
+
42
+ }
43
+ return $icegram_data;
44
+ }
45
+
46
+ function set_admin_style( $params ) {
47
+ $params['admin_style'] = array( 'label_bg_color' => '#22B189',
48
+ 'theme_header_height' => '6em',
49
+ 'thumbnail_width' => '43%',
50
+ 'thumbnail_height' => '10em'
51
+ );
52
+ return $params;
53
+ }
54
+ }
trunk/message-types/popup/themes/air-mail.png ADDED
Binary file
trunk/message-types/popup/themes/amaze.png ADDED
Binary file
trunk/message-types/popup/themes/compel.png ADDED
Binary file
trunk/message-types/popup/themes/convert.png ADDED
Binary file
trunk/message-types/popup/themes/inspire.png ADDED
Binary file
trunk/message-types/popup/themes/persuade.png ADDED
Binary file
trunk/message-types/popup/themes/popup.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ig_popup.ig_air-mail{position:relative;border-width:8px;border-style:solid;-moz-border-image:-moz-repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;-webkit-border-image:-webkit-repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;-o-border-image:-o-repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;border-image:repeating-linear-gradient(45deg,#a83439,#a83439 10px,#fdfdfd 10px,#fdfdfd 20px,#2f4175 20px,#2f4175 30px,#fdfdfd 30px,#fdfdfd 40px) 8 round;background-color:#fdfdfd;color:#707070}.ig_popup.ig_air-mail .ig_headline{padding:.5em;font-size:2.5em;text-align:center;color:#2C4A9D}.ig_popup.ig_air-mail .ig_image{float:right}.ig_popup.ig_air-mail .ig_message{padding:.2em 2em .8em;font-size:1.2em}.ig_popup.ig_air-mail .ig_close{background-position:-520px center;margin:0;top:0;right:0;opacity:.35}.ig_popup.ig_air-mail .ig_close:hover{background-position:-520px center;opacity:.75}.ig_popup.ig_air-mail .ig_button,.ig_popup.ig_air-mail input[type=submit],.ig_popup.ig_air-mail input[type=button]{background:#D82931;color:#FFF;width:50%;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;border:none;font-size:1.5em;text-transform:uppercase;font-weight:600;text-align:center;margin:.8em auto 1.2em;padding:.5em .15em}.ig_popup.ig_air-mail .ig_button:hover,.ig_popup.ig_air-mail input[type=submit]:hover,.ig_popup.ig_air-mail input[type=button]:hover{-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.5);box-shadow:0 0 5px 0 rgba(0,0,0,.5)}.ig_popup.ig_air-mail .ig_button:active,.ig_popup.ig_air-mail input[type=submit]:active,.ig_popup.ig_air-mail input[type=button]:active{-webkit-box-shadow:none;box-shadow:none}@media only screen and (max-device-width:319px){.ig_popup.ig_air-mail .ig_button,.ig_popup.ig_air-mail input[type=submit],.ig_popup.ig_air-mail input[type=button]{width:90%!important}}@media only screen and (min-device-width:320px) and (max-device-width:359px){.ig_popup.ig_air-mail .ig_button,.ig_popup.ig_air-mail input[type=submit],.ig_popup.ig_air-mail input[type=button]{width:90%!important}}@media only screen and (min-device-width:360px) and (max-device-width:413px){.ig_popup.ig_air-mail .ig_button,.ig_popup.ig_air-mail input[type=submit],.ig_popup.ig_air-mail input[type=button]{width:90%!important}}@media only screen and (min-device-width:414px) and (max-device-width:643px){.ig_popup.ig_air-mail .ig_button,.ig_popup.ig_air-mail input[type=submit],.ig_popup.ig_air-mail input[type=button]{width:90%!important}}.ig_popup.ig_form_right.ig_air-mail .ig_form_container.layout_right{padding-top:1.5em}.ig_popup.ig_amaze{border:.3em solid #444;background-color:#444;color:#FFF}.ig_popup.ig_amaze .ig_bg_overlay{display:block;background-image:url(../../../assets/images/popup-amaze-bg.jpg);opacity:.5}.ig_popup.ig_amaze .ig_headline{padding:.5em;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.5);font-size:2em}.ig_popup.ig_amaze .ig_image{float:left}.ig_popup.ig_amaze .ig_message{font-size:1.2em;padding:.5em 1.2em .8em;font-family:Georgia,Times,"Times New Roman",serif;margin:0 2em}.ig_popup.ig_amaze .ig_button,.ig_popup.ig_amaze input[type=submit],.ig_popup.ig_amaze input[type=button]{background:#2ecc70;color:#FFF;font-family:Calibri,Candara,Segoe,"Segoe UI",Optima,Arial,sans-serif;font-size:1.3em;letter-spacing:1px;vertical-align:top;font-weight:700;text-align:center;line-height:1.8em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border-bottom:.2em solid rgba(63,63,63,.6);text-shadow:1px 1px 0 rgba(0,0,0,.5);margin:.5em auto 1.2em;width:40%;padding:.3em 1em}.ig_popup.ig_amaze .ig_button:hover,.ig_popup.ig_amaze input[type=submit]:hover,.ig_popup.ig_amaze input[type=button]:hover{-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.5);box-shadow:0 0 5px 0 rgba(0,0,0,.5)}@media only screen and (max-device-width:319px){.ig_popup.ig_amaze{font-size:10px}.ig_popup.ig_amaze .ig_message{margin:0 1em}.ig_popup.ig_amaze .ig_button,.ig_popup.ig_amaze input[type=submit],.ig_popup.ig_amaze input[type=button]{width:90%!important}}@media only screen and (min-device-width:320px) and (max-device-width:359px){.ig_popup.ig_amaze{font-size:12px}.ig_popup.ig_amaze .ig_message{margin:0 1em}.ig_popup.ig_amaze .ig_button,.ig_popup.ig_amaze input[type=submit],.ig_popup.ig_amaze input[type=button]{width:90%!important}}@media only screen and (min-device-width:360px) and (max-device-width:413px){.ig_popup.ig_amaze{font-size:14px}.ig_popup.ig_amaze .ig_message{margin:0 1em}.ig_popup.ig_amaze .ig_button,.ig_popup.ig_amaze input[type=submit],.ig_popup.ig_amaze input[type=button]{width:90%!important}}@media only screen and (min-device-width:414px) and (max-device-width:643px){.ig_popup.ig_amaze{font-size:16px}.ig_popup.ig_amaze .ig_message{margin:0 1em}.ig_popup.ig_amaze .ig_button,.ig_popup.ig_amaze input[type=submit],.ig_popup.ig_amaze input[type=button]{width:90%!important}}@media only screen and (min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_popup.ig_amaze{font-size:18px}}@media only screen and (min-device-width:644px) and (max-device-width:767px) and (orientation :landscape){.ig_popup.ig_amaze{font-size:12px}}@media only screen and (min-width:768px) and (max-device-width:992px){.ig_popup.ig_amaze{font-size:14px}}.ig_popup.ig_compel{background:#FFF;color:#707070;border:4px dashed #c0392b}.ig_popup.ig_compel .ig_headline{padding:.5em 1em .5em .5em;font-size:2em;text-shadow:0 1px 0 rgba(0,0,0,.2);margin-bottom:.2em;text-align:center}.ig_popup.ig_compel .ig_image{float:left;padding-right:1em}.ig_popup.ig_compel .ig_message{padding:.5em 1.25em .8em;font-size:1.25em;font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif;margin:0 .5em .5em}.ig_popup.ig_compel .ig_close{background-position:-520px center;margin:0;top:0;right:0;opacity:.35}.ig_popup.ig_compel .ig_close:hover{background-position:-520px center;opacity:.75}.ig_popup.ig_compel .ig_button,.ig_popup.ig_compel input[type=submit],.ig_popup.ig_compel input[type=button]{background:#e74d3c;color:#FFF;width:50%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border-bottom:3px solid #bf3a2b;font-size:1.2em;text-transform:uppercase;font-weight:600;text-align:center;padding:.8em .15em;margin:.5em auto 1.2em}.ig_popup.ig_compel .ig_button:hover,.ig_popup.ig_compel input[type=submit]:hover,.ig_popup.ig_compel input[type=button]:hover{-webkit-box-shadow:0 0 5px 0 rgba(0,0,0,.5);box-shadow:0 0 5px 0 rgba(0,0,0,.5)}@media only screen and (max-device-width:319px){.ig_popup.ig_compel .ig_button,.ig_popup.ig_compel input[type=submit],.ig_popup.ig_compel input[type=button]{width:90%!important;padding:16px 4px 13px}}@media only screen and (min-device-width:320px) and (max-device-width:359px){.ig_popup.ig_compel .ig_button,.ig_popup.ig_compel input[type=submit],.ig_popup.ig_compel input[type=button]{width:90%!important;padding:16px 4px 13px}}@media only screen and (min-device-width:360px) and (max-device-width:413px){.ig_popup.ig_compel .ig_button,.ig_popup.ig_compel input[type=submit],.ig_popup.ig_compel input[type=button]{width:90%!important;padding:16px 4px 13px}}@media only screen and (min-device-width:414px) and (max-device-width:643px){.ig_popup.ig_compel .ig_button,.ig_popup.ig_compel input[type=submit],.ig_popup.ig_compel input[type=button]{width:90%!important;padding:16px 4px 13px}}@font-face{font-family:'Goudy Bookletter 1911';font-style:normal;font-weight:400;src:local('Goudy Bookletter 1911'),local('GoudyBookletter1911'),url(https://fonts.gstatic.com/s/goudybookletter1911/v6/l5lwlGTN3pEY5Bf-rQEuIAQibyVIKv8boZ0oFv0g-Lo.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2212,U+2215,U+E0FF,U+EFFD,U+F000}.ig_popup.ig_convert{background-color:#fffdcc;color:#484747;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:50%;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em}.ig_popup.ig_convert .ig_headline{font-size:2.5em;padding:.8em 1.2em .3em;text-align:center;font-family:'Goudy Bookletter 1911',serif}.ig_popup.ig_convert .ig_image{float:right}.ig_popup.ig_convert .ig_message{font-size:1.2em;padding:.8em 1.5em;font-family:Calibri,Candara,Segoe,"Segoe UI",Optima,Arial,sans-serif;vertical-align:baseline;text-align:center}.ig_popup.ig_convert .ig_button,.ig_popup.ig_convert input[type=submit],.ig_popup.ig_convert input[type=button]{background:#cb0606;color:#fcf8f8;font-weight:700;text-decoration:none;font-size:1.75em;border:.2em solid rgba(0,0,0,.2)!important;width:60%;font-family:'Goudy Bookletter 1911',serif;-moz-border-radius:3em;-webkit-border-radius:3em;border-radius:3em;text-align:center;line-height:1.5em;padding:.3em 1em;margin:.5em auto 1.2em;clear:both}.ig_popup.ig_convert .ig_button:hover,.ig_popup.ig_convert input[type=submit]:hover,.ig_popup.ig_convert input[type=button]:hover{-webkit-box-shadow:0 0 8px 0 rgba(0,0,0,.4);box-shadow:0 0 8px 0 rgba(0,0,0,.4)}.ig_popup.ig_convert .ig_button:active,.ig_popup.ig_convert input[type=submit]:active,.ig_popup.ig_convert input[type=button]:active{-webkit-box-shadow:none;box-shadow:none}.ig_popup.ig_convert .ig_close{background-position:0 center;top:6px;right:6px;opacity:.4}.ig_popup.ig_convert .ig_close:hover{background-position:0 center;opacity:.7}.ig_popup.ig_form_right.ig_convert .ig_form_container.layout_right{padding-top:2.2em}@media only screen and (max-device-width:319px){.ig_popup.ig_convert{width:90%}.ig_popup.ig_convert .ig_button,.ig_popup.ig_convert input[type=submit],.ig_popup.ig_convert input[type=button]{width:75%!important}.ig_popup.ig_form_right.ig_convert .ig_form_container.layout_right{padding-top:1em}}@media only screen and (min-device-width:320px) and (max-device-width:359px){.ig_popup.ig_convert{width:85%}.ig_popup.ig_convert .ig_button,.ig_popup.ig_convert input[type=submit],.ig_popup.ig_convert input[type=button]{width:75%!important}.ig_popup.ig_form_right.ig_convert .ig_form_container.layout_right{padding-top:1em}}@media only screen and (min-device-width:360px) and (max-device-width:413px){.ig_popup.ig_convert{width:85%}.ig_popup.ig_convert .ig_button,.ig_popup.ig_convert input[type=submit],.ig_popup.ig_convert input[type=button]{width:75%!important}.ig_popup.ig_form_right.ig_convert .ig_form_container.layout_right{padding-top:1em}}@media only screen and (min-device-width:414px) and (max-device-width:643px){.ig_popup.ig_convert{width:85%}.ig_popup.ig_convert .ig_button,.ig_popup.ig_convert input[type=submit],.ig_popup.ig_convert input[type=button]{width:75%!important}.ig_popup.ig_form_right.ig_convert .ig_form_container.layout_right{padding-top:1em}}.mfp-bg,.mfp-wrap{z-index:999999;position:fixed;left:0;top:0}.mfp-bg,.mfp-container,.mfp-wrap{height:100%;width:100%}.mfp-container:before,.mfp-figure:after{content:''}.mfp-bg{overflow:hidden;background:#0b0b0b;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{outline:0!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-close,.mfp-preloader{text-align:center;position:absolute}.mfp-ajax-holder .mfp-content,.mfp-inline-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-arrow,.mfp-close,.mfp-counter,.mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#CCC;top:50%;width:auto;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#CCC}.mfp-close,.mfp-preloader a:hover{color:#FFF}.mfp-s-error .mfp-content,.mfp-s-ready .mfp-preloader{display:none}button.mfp-arrow,button.mfp-close{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;right:0;top:0;text-decoration:none;opacity:.65;filter:alpha(opacity=65);padding:0 0 18px 10px;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:focus,.mfp-close:hover{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-iframe-holder .mfp-close,.mfp-image-holder .mfp-close{color:#FFF;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#CCC;font-size:12px;line-height:18px;white-space:nowrap}.mfp-figure,img.mfp-img{line-height:0}.mfp-arrow{position:absolute;opacity:.65;filter:alpha(opacity=65);margin:-55px 0 0;top:50%;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1;filter:alpha(opacity=100)}.mfp-arrow .mfp-a,.mfp-arrow .mfp-b,.mfp-arrow:after,.mfp-arrow:before{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:inset transparent}.mfp-arrow .mfp-a,.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow .mfp-b,.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left .mfp-a,.mfp-arrow-left:after{border-right:17px solid #FFF;margin-left:31px}.mfp-arrow-left .mfp-b,.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3F3F3F}.mfp-arrow-right{right:0}.mfp-arrow-right .mfp-a,.mfp-arrow-right:after{border-left:17px solid #FFF;margin-left:39px}.mfp-arrow-right .mfp-b,.mfp-arrow-right:before{border-left:27px solid #3F3F3F}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-image-holder .mfp-content,img.mfp-img{max-width:100%}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}.mfp-figure:after,img.mfp-img{width:auto;height:auto;display:block}img.mfp-img{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0;margin:0 auto}.mfp-figure:after{position:absolute;left:0;top:40px;bottom:40px;right:0;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#BDBDBD;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#F3F3F3;word-wrap:break-word;padding-right:36px}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}.ig_popup,.ig_popup .ig_bg_overlay,.ig_popup .ig_content{background-color:transparent}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}.ig_popup{opacity:1;display:block;z-index:100000;width:60%;width:58%;margin:32px auto 20px!important;position:relative}.ig_popup .ig_bg_overlay{width:100%;height:100%;top:0;left:0;margin:0;padding:0;position:absolute;display:none}.ig_popup .ig_headline{text-decoration:none;font-weight:800;font-size:2em;line-height:1.2em}.ig_popup .ig_data{position:relative}.ig_popup .ig_image{margin:0 1em}.ig_popup .ig_message{line-height:1.2em;font-size:1.2em}.ig_popup .ig_close{background-image:url(../../../assets/images/sprite_1.png);background-position:-600px center;background-repeat:no-repeat;height:30px;width:30px;top:-15px;right:-15px;margin:0;cursor:pointer;position:absolute;z-index:20}.ig_popup .ig_close:hover{background-position:-640px center}.ig_popup .ig_button,.ig_popup input[type=submit],.ig_popup input[type=button]{cursor:pointer;display:block;background-image:none;border:none;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;position:relative}.mfp-wrap .ig_powered_by{position:fixed;bottom:1em;left:1em;font-size:14px;padding:.1em}@media only screen and (max-device-width:319px){.ig_popup{width:90%;top:3%!important;margin:5px auto!important;font-size:8px}.ig_popup .ig_button,.ig_popup input[type=submit],.ig_popup input[type=button]{width:90%!important}}@media only screen and (min-device-width:320px) and (max-device-width:359px){.ig_popup{width:85%;top:5%!important;margin:10px auto!important;font-size:10px}.ig_popup .ig_button,.ig_popup input[type=submit],.ig_popup input[type=button]{width:90%!important}}@media only screen and (min-device-width:360px) and (max-device-width:413px){.ig_popup{width:85%;top:5%!important;margin:10px auto!important;font-size:12px}.ig_popup .ig_button,.ig_popup input[type=submit],.ig_popup input[type=button]{width:90%!important}}@media only screen and (min-device-width:414px) and (max-device-width:643px){.ig_popup{width:85%;top:5%!important;margin:10px auto!important;font-size:13px}.ig_popup .ig_button,.ig_popup input[type=submit],.ig_popup input[type=button]{width:90%!important}}@media only screen and (min-device-width:644px) and (max-device-width:767px) and (orientation :portrait){.ig_popup{top:5%!important;margin:10px auto!important;font-size:14px}}@media only screen and (min-device-width:644px) and (max-device-width:767px) and (orientation :landscape){.ig_popup{top:5%!important;margin:10px auto!important;font-size:11px}}@media only screen and (min-width:768px) and (max-device-width:992px){.ig_popup{top:5%!important;margin:10px auto!important;font-size:14px}}.ig_popup .ig_form_container{width:30%;float:left}.ig_popup.ig_form_left .ig_data{position:relative}.ig_popup.ig_form_left .ig_data,.ig_popup.ig_form_right .ig_data{width:70%;float:left}.ig_popup.ig_form_right.ig_form_style_4 .ig_close,.ig_popup.ig_form_right.ig_form_style_4 .ig_close:hover{margin:-15px -15px 0 0}@media only screen and (max-device-width:319px),(min-device-width:320px) and (max-device-width:359px),(min-device-width:360px) and (max-device-width:413px),(min-device-width:414px) and (max-device-width:643px),(min-device-width:644px) and (max-device-width:767px) and (orientation :portrait),(min-device-width:644px) and (max-device-width:767px) and (orientation :landscape),(min-width:768px) and (max-device-width:992px){.ig_popup.ig_form_left .ig_form_container.layout_left,.ig_popup.ig_form_right .ig_form_container.layout_right{display:none}.ig_popup.ig_form_bottom .ig_form_container.layout_bottom,.ig_popup.ig_form_left .ig_form_container.layout_bottom,.ig_popup.ig_form_right .ig_form_container.layout_bottom{display:block;width:100%;font-size:1.5em;height:auto!important}.ig_popup.ig_form_inline .ig_form_container.layout_inline{padding:.6em 0}.ig_popup.ig_form_left .ig_data,.ig_popup.ig_form_right .ig_data{width:100%}.ig_popup .ig_form_container.layout_bottom .ig_full .ig_form_els,.ig_popup .ig_form_container.layout_bottom .ig_half .ig_form_els,.ig_popup .ig_form_container.layout_bottom .ig_quater .ig_form_els,.ig_popup .ig_form_container.layout_bottom .ig_third .ig_form_els,.ig_popup .ig_form_container.layout_inline .ig_full .ig_form_els,.ig_popup .ig_form_container.layout_inline .ig_half .ig_form_els,.ig_popup .ig_form_container.layout_inline .ig_quater .ig_form_els,.ig_popup .ig_form_container.layout_inline .ig_third .ig_form_els{width:99%;margin:.5em auto 0}.ig_popup .ig_form_container.layout_bottom .ig_button_label,.ig_popup .ig_form_container.layout_inline .ig_button_label{display:none}.ig_popup .ig_form_container.layout_bottom .ig_button,.ig_popup .ig_form_container.layout_bottom input[type=submit],.ig_popup .ig_form_container.layout_bottom input[type=button],.ig_popup .ig_form_container.layout_inline .ig_button,.ig_popup .ig_form_container.layout_inline input[type=submit],.ig_popup .ig_form_container.layout_inline input[type=button]{width:99%!important;font-size:1em}.ig_popup.ig_form_bottom .ig_form_container.layout_bottom .ig_form_els.ig_form_el_radio,.ig_popup.ig_form_bottom .ig_form_container.layout_bottom .ig_form_els.ig_form_el_radio label,.ig_popup.ig_form_inline .ig_form_container.layout_inline .ig_form_els.ig_form_el_radio,.ig_popup.ig_form_inline .ig_form_container.layout_inline .ig_form_els.ig_form_el_radio label{display:block}.ig_popup.ig_form_style_1 .ig_form_container:before{border-width:0;border-style:solid;border-color:#000!important;opacity:.3;top:0}.ig_popup.ig_form_left.ig_form_style_1 .ig_form_container.layout_bottom:before,.ig_popup.ig_form_right.ig_form_style_1 .ig_form_container.layout_bottom:before{width:100%;border-top-width:.2em}.ig_popup.ig_form_bottom.ig_form_style_1 .ig_form_container.layout_bottom:before{border-top-width:.2em}.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els{margin-right:0;margin-left:0}.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els input,.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_first input,.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_last input,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els input,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first input,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_last input{-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em;padding-left:1em}.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els input.ig_button,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els input.ig_button{padding:inherit}.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els label,.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_first label,.ig_popup.ig_form_style_2 .ig_form_container.layout_bottom .ig_form_els.ig_form_els_last label,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els label,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_first label,.ig_popup.ig_form_style_2 .ig_form_container.layout_inline .ig_form_els.ig_form_els_last label{padding-left:1em}.ig_popup.ig_form_right.ig_form_style_4 .ig_close,.ig_popup.ig_form_right.ig_form_style_4 .ig_close:hover{margin:0}.ig_popup.ig_form_left.ig_form_style_4 .ig_form_container:before,.ig_popup.ig_form_right.ig_form_style_4 .ig_form_container:before{border-bottom-width:0}}.ig_popup.ig_inspire{background:#FFF;color:#444}.ig_popup.ig_inspire .ig_headline{color:#82AD23;text-align:center;padding:.8em .8em .3em;font-size:2.5em}.ig_popup.ig_inspire .ig_image{float:left}.ig_popup.ig_inspire .ig_message{padding:.8em 2em;font-size:1.25em;text-align:justify}.ig_popup.ig_inspire .ig_button,.ig_popup.ig_inspire input[type=submit],.ig_popup.ig_inspire input[type=button]{background:#82AD23;color:#fff;vertical-align:middle;font-size:2em;font-weight:700;font-style:normal;text-decoration:none;text-align:center;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1;width:55%;line-height:1.2em;padding:.5em;margin:.5em auto 1em;border-top:none}.ig_popup.ig_inspire .ig_button:hover,.ig_popup.ig_inspire input[type=submit]:hover,.ig_popup.ig_inspire input[type=button]:hover{border-top:none;-webkit-box-shadow:0 0 8px 0 rgba(0,0,0,.4);box-shadow:0 0 8px 0 rgba(0,0,0,.4)}.ig_popup.ig_inspire .ig_button:active,.ig_popup.ig_inspire input[type=submit]:active,.ig_popup.ig_inspire input[type=button]:active{border-top:none;font-weight:400;-webkit-box-shadow:none;box-shadow:none}.ig_popup.ig_inspire .ig_close{background-position:-763px center;margin:0;top:0;right:0;opacity:.4;height:24px;width:24px;background-color:rgba(0,0,0,.45)}.ig_popup.ig_inspire .ig_close:hover{opacity:.7}.ig_popup.ig_form_right.ig_inspire .ig_form_container.layout_right{padding-top:2.5em}@media only screen and (max-device-width:319px){.ig_popup.ig_inspire .ig_button,.ig_popup.ig_inspire input[type=submit],.ig_popup.ig_inspire input[type=button]{width:90%!important}.ig_popup.ig_form_right.ig_inspire .ig_form_container.layout_right{padding-top:1em}}@media only screen and (min-device-width:320px) and (max-device-width:359px){.ig_popup.ig_inspire .ig_button,.ig_popup.ig_inspire input[type=submit],.ig_popup.ig_inspire input[type=button]{width:90%!important}.ig_popup.ig_form_right.ig_inspire .ig_form_container.layout_right{padding-top:1em}}@media only screen and (min-device-width:360px) and (max-device-width:413px){.ig_popup.ig_inspire .ig_button,.ig_popup.ig_inspire input[type=submit],.ig_popup.ig_inspire input[type=button]{width:90%!important}.ig_popup.ig_form_right.ig_inspire .ig_form_container.layout_right{padding-top:1em}}@media only screen and (min-device-width:414px) and (max-device-width:643px){.ig_popup.ig_inspire .ig_button,.ig_popup.ig_inspire input[type=submit],.ig_popup.ig_inspire input[type=button]{width:90%!important}.ig_popup.ig_form_right.ig_inspire .ig_form_container.layout_right{padding-top:1em}}.ig_popup.ig_persuade{background:#ef504e;color:#FFF;border:.4em dashed #FFF;padding-bottom:.1em}.ig_popup.ig_persuade .ig_headline{letter-spacing:0;font-size:2.8em;text-align:center;-webkit-font-smoothing:antialiased;line-height:1em;padding:.7em .7em .5em}.ig_popup.ig_persuade .ig_image{float:left}.ig_popup.ig_persuade .ig_message{padding:.5em 1.5em .8em;font-size:1.5em;font-weight:300;text-align:center;-webkit-font-smoothing:antialiased}.ig_popup.ig_persuade .ig_button,.ig_popup.ig_persuade input[type=submit],.ig_popup.ig_persuade input[type=button]{background:#424242;color:#FFF;text-decoration:none;text-align:center;font-size:2em;font-weight:400;line-height:1.2em;width:55%;margin:.5em auto 1em;padding:.4em;border:none;-moz-border-radius:.4em;-webkit-border-radius:.4em;border-radius:.4em;border-bottom:.28em solid #333;border-bottom:.2em solid rgba(0,0,0,.3)!important;clear:both;-moz-box-shadow:0 .3em 1.5em rgba(0,0,0,.6)!important;-webkit-box-shadow:0 .3em 1.5em rgba(0,0,0,.6)!important;box-shadow:0 .3em 1.5em rgba(0,0,0,.6)!important}.ig_popup.ig_persuade .ig_button:hover,.ig_popup.ig_persuade input[type=submit]:hover,.ig_popup.ig_persuade input[type=button]:hover{-moz-box-shadow:0 .1em .1em rgba(0,0,0,.3)!important;-webkit-box-shadow:0 .1em .1em rgba(0,0,0,.3)!important;box-shadow:0 .1em .1em rgba(0,0,0,.3)!important}.ig_popup.ig_persuade .ig_button:active,.ig_popup.ig_persuade input[type=submit]:active,.ig_popup.ig_persuade input[type=button]:active{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}
trunk/message-types/toast/default.css ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/toast/main.js ADDED
@@ -0,0 +1 @@
 
1
+ /* File for backward compatibility. */
trunk/message-types/toast/main.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+ if ( class_exists( 'Icegram_Message_Type_Toast' ) ) return;
4
+
5
+ /**
6
+ * Class Icegram Toast
7
+ */
8
+ class Icegram_Message_Type_Toast extends Icegram_Message_Type {
9
+
10
+ function __construct() {
11
+ parent::__construct( dirname( __FILE__ ), plugins_url( '/', __FILE__ ) );
12
+ add_filter( 'icegram_message_type_params_toast', array( $this, 'set_admin_style' ) );
13
+ }
14
+
15
+ function define_settings() {
16
+ parent::define_settings();
17
+ $this->settings['position']['values'] = array( '00', '01', '02', '11', '20', '21', '22' );
18
+ $this->settings['position']['default'] = '02';
19
+ $this->settings['theme']['default'] = 'announce';
20
+ unset ( $this->settings['text_color'],
21
+ $this->settings['bg_color'],
22
+ $this->settings['label'],
23
+ $this->settings['embed_form']
24
+ );
25
+ }
26
+
27
+ function set_admin_style( $params ) {
28
+
29
+ $params['admin_style'] = array( 'label_bg_color' => '#EDBB00',
30
+ 'theme_header_height' => '5em',
31
+ 'thumbnail_width' => '43%',
32
+ 'thumbnail_height' => '7.5em'
33
+ );
34
+ return $params;
35
+ }
36
+ }
trunk/message-types/toast/themes/announce.png ADDED
Binary file
trunk/message-types/toast/themes/balance.png ADDED
Binary file
trunk/message-types/toast/themes/burnt.png ADDED
Binary file
trunk/message-types/toast/themes/clear.png ADDED
Binary file
trunk/message-types/toast/themes/night-glow.png ADDED
Binary file
trunk/message-types/toast/themes/stand-out.png ADDED
Binary file
trunk/message-types/toast/themes/toast.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ig_toast.ig_announce.ig_container{background-color:rgba(255,255,105,.95)!important;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.1),inset 0 -1px 0 rgba(255,255,255,.15),0 0 6px rgba(0,0,0,.08),0 0 0 1px rgba(35,47,64,.2);-moz-box-shadow:0 2px 5px rgba(0,0,0,.1),inset 0 -1px 0 rgba(255,255,255,.15),0 0 6px rgba(0,0,0,.08),0 0 0 1px rgba(35,47,64,.2);box-shadow:0 2px 5px rgba(0,0,0,.1),inset 0 -1px 0 rgba(255,255,255,.15),0 0 6px rgba(0,0,0,.08),0 0 0 1px rgba(35,47,64,.2);background-image:-webkit-linear-gradient(90deg,rgba(255,255,105,.95) 0,rgba(255,255,105,0) 100%);background-image:-moz-linear-gradient(90deg,rgba(255,255,105,.95) 0,rgba(255,255,105,0) 100%);background-image:linear-gradient(90deg,rgba(255,255,105,.95) 0,rgba(255,255,105,0) 100%);color:rgba(67,76,89,.9)!important;text-shadow:0 1px 0 rgba(255,255,255,.85)}.ig_toast.ig_announce.ig_container:hover{border-color:rgba(0,0,0,1)}.ig_toast.ig_announce .ig_wrapper{border:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.55);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.55);box-shadow:inset 0 1px 0 rgba(255,255,255,.55)}.ig_toast.ig_announce .ig_content{border:none;color:rgba(67,76,89,.9)!important;background-color:transparent!important;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;-moz-box-shadow:inset 0 -3px 2px rgba(58,71,89,.04);-webkit-box-shadow:inset 0 -3px 2px rgba(58,71,89,.04);box-shadow:inset 0 -3px 2px rgba(58,71,89,.04)}.ig_toast.ig_announce .ig_headline{color:rgba(67,76,89,.9)}.ig_toast.ig_balance.ig_container{border:1px solid #777;color:rgba(20,20,20,1);text-shadow:0 1px 0 rgba(255,255,255,.7);background:-webkit-gradient(linear,left top,left bottom,from(rgba(204,204,204,.75)),to(rgba(240,240,240,1)),color-stop(.4,rgba(139,139,139,.5)))!important;background:linear-gradient(to bottom,rgba(204,204,204,.75) 0,rgba(139,139,139,.5) 40%,rgba(240,240,240,1) 100%)!important;-webkit-font-smoothing:antialiased}.ig_toast.ig_balance .ig_content{background:0 0!important}.ig_toast.ig_balance .ig_headline{color:hsla(0,0%,8%,1);text-shadow:0 1px 0 hsla(0,100%,100%,.7);border-bottom:1px solid #777;width:100%}.ig_toast.ig_balance .ig_message{color:hsla(0,0%,8%,1);text-shadow:0 1px 0 hsla(0,100%,100%,.7);margin-top:5px}.ig_toast.ig_burnt .ig_content,.ig_toast.ig_burnt.ig_container{background-color:transparent!important}.ig_toast.ig_burnt.ig_container{min-height:64px;position:relative;-moz-box-sizing:border-box;box-sizing:border-box}.ig_toast.ig_burnt .ig_wrapper{padding:5px 5px 5px 65px}.ig_toast.ig_burnt .ig_base{position:absolute;top:0;left:0;bottom:0;right:0;background-color:transparent;background-image:-webkit-linear-gradient(top,rgba(0,0,0,.8),rgba(0,0,0,.88));background-image:-moz-linear-gradient(top,rgba(0,0,0,.8),rgba(0,0,0,.88));background-image:linear-gradient(to bottom,rgba(0,0,0,.8),rgba(0,0,0,.88));border:1px solid #000;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.07),inset 0 0 0 1px rgba(255,255,255,.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.07),inset 0 0 0 1px rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.07),inset 0 0 0 1px rgba(255,255,255,.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;overflow:hidden;z-index:0}.ig_toast.ig_burnt .ig_line{width:1px;height:27px;position:absolute;top:1px;left:58px;background-image:-webkit-linear-gradient(top,rgba(0,0,0,.3),rgba(0,0,0,0));background-image:-moz-linear-gradient(top,rgba(0,0,0,.3),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.3),rgba(0,0,0,0))}.ig_toast.ig_burnt .ig_line:after{content:"";display:block;width:1px;height:26px;position:absolute;top:1px;left:-1px;background-image:-webkit-linear-gradient(top,rgba(255,255,255,.15),rgba(255,255,255,0));background-image:-moz-linear-gradient(top,rgba(255,255,255,.15),rgba(255,255,255,0));background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0))}.ig_toast.ig_burnt .ig_headline{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.5);z-index:1}.ig_toast.ig_burnt .ig_icon{max-height:42px;max-width:42px;left:8px;top:5px}.ig_toast.ig_burnt .ig_icon img{width:40px;height:40px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.ig_toast.ig_burnt .ig_message{color:rgba(255,255,255,.83);text-shadow:0 -1px 0 rgba(0,0,0,.7);position:relative}.ig_toast.ig_clear.ig_container{border:3px solid rgba(0,0,0,.4);-webkit-border-radius:.5em;-moz-border-radius:.5em;border-radius:.5em;background:#fff!important}.ig_toast.ig_clear .ig_content{background-color:transparent!important}.ig_toast.ig_clear .ig_headline{color:#222;letter-spacing:.7pt;line-height:16px;text-shadow:0 1px 0 rgba(255,255,255,.6)}.ig_toast.ig_clear .ig_message{color:#444;text-align:left;text-shadow:0 1px 0 rgba(255,255,255,.6);line-height:15px}.ig_toast.ig_container{display:none}.ig_toast .ig_wrapper{overflow:hidden;padding:5px 5px 5px 50px;position:relative;min-height:34px}.ig_toast .ig_content{overflow:hidden}.ig_toast .ig_headline{display:inline-block;margin:0;text-align:left;position:relative}.ig_toast .ig_icon{overflow:hidden;display:block;max-height:32px;max-width:32px;left:10px;top:10px;position:absolute}.ig_toast .ig_icon img{max-width:32px;max-height:32px;margin:0;padding:0}.ig_toast .ig_message{margin:-3px 0 0 -2px}.ig_toast .ig_message p{margin:.15em}.ig_toast_block{position:fixed;list-style:none;z-index:999999;-ms-word-wrap:break-word;word-wrap:break-word;padding:0;margin:5px}.ig_toast_block *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;text-transform:none}.ig_toast_block .ig_container{margin:10px 0}.ig_toast_block .ig_headline{font-weight:700;clear:none;padding:0}.ig_toast_block .ig_message{font-size:12px;text-align:left;line-height:15px}.ig_toast.ig_night-glow.ig_container{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.6);-moz-box-shadow:0 1px 3px rgba(0,0,0,.6);box-shadow:0 1px 3px rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;background-color:transparent!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.83)),to(rgba(51,51,51,.73)),color-stop(.5,rgba(0,0,0,.83)))!important;background:-moz-linear-gradient(left,rgba(0,0,0,.83) 0,rgba(0,0,0,.83) 50%,rgba(51,51,51,.73) 100%)!important;background:linear-gradient(to bottom,rgba(0,0,0,.83) 0,rgba(0,0,0,.83) 50%,rgba(51,51,51,.73) 100%)!important;border:1px solid rgba(0,0,0,.6);color:rgba(150,150,150,1);text-shadow:0 -1px 0 #000}.ig_toast.ig_night-glow .ig_wrapper{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-image:url(../../../assets/images/toast-glow.png);background-repeat:no-repeat;border-bottom:1px solid rgba(255,255,255,.05);-moz-border-image:stretch;-ms-border-image:stretch;-o-border-image:stretch;-webkit-border-image:stretch;border-image:stretch;position:auto}.ig_toast.ig_night-glow .ig_content{padding-left:8px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border-left:1px solid rgba(255,255,255,.1);background-color:transparent!important}.ig_toast.ig_night-glow .ig_headline,.ig_toast.ig_night-glow .ig_message{color:rgba(255,255,255,.9)}.ig_toast.ig_stand-out .ig_wrapper{padding:5px 50px 5px 10px}.ig_toast.ig_stand-out.ig_container{background-color:#1f1f1f!important;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,rgba(0,0,0,.1)),color-stop(1,rgba(255,255,255,.1))),url(../../../assets/images/stand-out.png)!important;background-image:-moz-linear-gradient(bottom,rgba(0,0,0,.1) 0,rgba(255,255,255,.1) 100%),url(../../../assets/images/stand-out.png)!important;background-image:linear-gradient(to top,rgba(0,0,0,.1) 0,rgba(255,255,255,.1) 100%),url(../../../assets/images/stand-out.png)!important;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3) inset,0 -1px 0 rgba(255,255,255,.1) inset,0 1px 4px rgba(0,0,0,.7);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3) inset,0 -1px 0 rgba(255,255,255,.1) inset,0 1px 4px rgba(0,0,0,.7);box-shadow:0 1px 0 rgba(255,255,255,.3) inset,0 -1px 0 rgba(255,255,255,.1) inset,0 1px 4px rgba(0,0,0,.7);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.75);border:1px solid #111}.ig_toast.ig_stand-out .ig_content{background-color:transparent!important}.ig_toast.ig_stand-out .ig_icon{right:10px;left:auto;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ig_toast.ig_stand-out .ig_headline,.ig_toast.ig_stand-out .ig_message{color:rgba(255,255,255,.7);line-height:15px}
trunk/readme.txt ADDED
@@ -0,0 +1,554 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Icegram - Popups, Optins, CTAs & lot more... ===
2
+ Contributors: icegram, storeapps, niravmehta, putler
3
+ Donate link: http://www.icegram.com/
4
+ Tags: popup, window, hellobar, optin, lead capture, marketing, form, notification, messenger, targeting, monster, ninja ,wordpress lead generation, wordpress lightbox optin, wordpress lightbox optin form, wordpress lightbox optins, wordpress mobile optin forms, wordpress mobile popup, wordpress mobile popups, wordpress optin form, wordpress overlay popup, wordpress popup, wordpress popup form, wordpress popup plugin, wordpress popup solution, wordpress popups , popups, subscribe, wp popups, optin bars, action grabber, constant contact, toast notifications, leads, lists, builder, action bar, floating bar, footer bar, hellobar alternative, pop over, Popup plugin, aweber, campaign monitor, constant contact, email list, exit-intent, getresponse, analytics, Hubspot, icontact, infusionsoft, newsletter, Mailing list pop-up, retargeting, Animation,Popups with Animation ,Responsive Popup, split testing, AB testing
5
+ Requires at least: 3.9
6
+ Tested up to: 4.5.3
7
+ Stable tag: 1.9.20.1
8
+ License: GPLv3
9
+ License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
+
11
+ The best WordPress plugin for beautiful popups, hellobars, slide-ins & notifications. Capture leads, Instant results and awesome support.
12
+
13
+ == Description ==
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
+ Most similar plugins are paid and still offer a lot less. Icegram is full featured, easy to use, and still free!
20
+
21
+ = Includes: =
22
+ * Popups, header / footer bars, toast notifications, messengers - everything!
23
+ * Powerful targeting rules
24
+ * All-in-one, fully integrated WordPress plugin
25
+ * Compatible with auto responders, other plugins and themes
26
+ * Unique headline generator for ideas
27
+ * No forceful display of Icegram branding in your messages!
28
+ * And a lot more...
29
+
30
+ [youtube http://www.youtube.com/watch?v=89N0SXDDvOI]
31
+
32
+ = Proven to Engage & Convert =
33
+ 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...
34
+
35
+ = Zero Learning Curve =
36
+ Most other plugins are full of complicated screens and options. Icegram was designed to be easy from the ground up. You can manage campaigns and messages from a single screen. And most importantly, you won't have to call a tech friend to understand a thing!
37
+
38
+ = Beautiful, Customizable Theme Designs =
39
+ 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.
40
+
41
+ = Complete Control Over Message Content & Delivery =
42
+ 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.
43
+
44
+ * Continue using powerful **short codes your theme provides** for layout and styling
45
+ * Add **HD Videos / Audio or any other multimedia** content
46
+ * Embed subscription forms from **mailing list service of your choice**
47
+ * Use short codes **other plugins** provide – embed forms, widgets, social sharing buttons, twitter feed…
48
+ * Add **inline JavaScript or CSS** for customizations
49
+ * Target campaigns on different pages - with Wildcard URLs, page selection and more...
50
+ * **Full HTML** editing capability for maximum control
51
+
52
+ = Works with Multi Site, WPML and even non WordPress sites =
53
+ Icegram and its addons are WordPress Multisite compatible. Each site becomes an independent Icegram installation.
54
+
55
+ Icegram is also *WPML Compatible*. You can show multilingual messages in different languages as you wish.
56
+
57
+ And, as a matter of fact you can show Icegram campaign and messages on non WordPress sites too! Use the premium Icegram Remote addon, and you can show Icegram campaigns anywhere.
58
+
59
+ = Icegram is a Good Neighbour =
60
+ Icegram works with most WordPress plugins and themes. It can integrate with all mailing list / newsletter / optin / CRM / form services that provide embeddable HTML form too.
61
+
62
+ Icegram works with MailChimp, Aweber, Constant Contact, MadMimi, Campaign Monitor, Get Response, Klawoo, iContact, e-GOI, SendPress, MailPoet, Infusion Soft, Email Buddy, My Mail and all others..
63
+
64
+ Similarly, you can embed forms in Icegram messages using shortcodes / HTML from Gravity Forms, Contact Form 7, Ninja Forms, JetPack, Formidable Pro, Inbound Now, Quform, Fast Secure Form, Visual Form Builder and many others...
65
+
66
+ Icegram campaigns and messages can be shown anywhere in WordPress using shortcodes. And Icegram has a fairly extensive API for creating new message types, themes and addons.
67
+
68
+
69
+ = Do More with Addons =
70
+ Icegram is an open platform. The core is already powerful, but you can do even more with free and premium addons.
71
+
72
+ * Analytics - track impressions, click throughs and conversions with a free addon
73
+ * Themes Pack 2014 - additional 17 themes as a bonus
74
+ * Exit Intent, Scroll Position, Time Delay, JavaScript, Another Message... Show and Hide messages based on user behavior
75
+ * Geo Targeting - based on visitor's location - continent, country, city, region or IP address
76
+ * CTA Actions - Open link, in new window, submit form, AJAX submission, show another message, hide this message... New actions for CTA buttons
77
+ * Remote - Show Icegram messages on any site - WordPress or otherwise
78
+ * Additional message types - Overlay, Inline, Sidebars, Interstitial, Ribbons, Stickies, Badges...
79
+
80
+ = Ok, there is even more =
81
+ There is no end to Icegram's awesomeness!!
82
+
83
+ * Unlimited campaigns
84
+ * Unlimited messages
85
+ * Breakthrough conversions
86
+ * Smart, Responsive template designs
87
+ * Display animations
88
+ * Time delayed message display
89
+ * Multiple display positions - top, middle, bottom, left, right, center...
90
+ * Reuse messages across campaigns
91
+ * Automatic Updates
92
+ * Professional Support
93
+
94
+ = Help Fellow WordPressers by Writing a Review =
95
+
96
+ If you like Icegram, please leave a five star review on WordPress. That helps fellow website owners assess Icegram easily and benefit from it!
97
+
98
+
99
+ = Website, Demos, Shop, Social, Love =
100
+
101
+ * [Official Icegram website](http://www.icegram.com/)
102
+ * **[Dozens of Demos](http://www.icegram.com/demos/)** of different Icegram messages
103
+ * **[Shop for free and paid add-ons](http://www.icegram.com/addons/)**
104
+ * [A few customer reviews](http://www.icegram.com/customers/)
105
+ * Follow Icegram on Twitter [@icegram](https://twitter.com/icegram/)
106
+
107
+
108
+ == Installation ==
109
+
110
+ 1. Unzip and upload contents of the plugin to your /wp-content/plugins/ directory
111
+ 2. Activate the plugin through the 'Plugins' menu in WordPress
112
+ 3. Click on 'Icegram' option within WordPress admin sidebar menu
113
+
114
+ == Frequently Asked Questions ==
115
+
116
+ = Messages look broken / formatting is weird... =
117
+
118
+ This is most likely due to CSS conflicts with current theme. We suggest using simple formatting for messages. You can also write custom CSS in your theme to fix any problems.
119
+
120
+ = Extra Line Breaks / Paragraphs in messages... =
121
+
122
+ Go to HTML mode in content editor and pull your custom HTML code all together in one line. Don't leave blank lines between two tags. That should fix it.
123
+
124
+ = How do I add custom CSS for messages? =
125
+
126
+ You can use custom CSS/JS inline in your message HTML. You can also use your theme's custom JS / CSS feature to add your changes.
127
+
128
+ = Optin Forms / Mailing service integration... =
129
+
130
+ You can embed any optin / subscription form to your Icegram messages using HTML code. You may even use a shortcode if you are using a WP plugin from your newsletter / lead capture service.
131
+
132
+ Use the "Embed Form" button above the text editor to paste in HTML code from your mailing list service and let Icegram automatically "clean it up" for usage in Icegram messages.
133
+
134
+ = Preview does not work / not refreshing... =
135
+
136
+ Doing a browser refresh while previewing will not show your most recent changes. Click 'Preview' button to see a preview with your latest changes.
137
+
138
+ = Can I use shortcodes in a message? =
139
+
140
+ Yes! Messages support shortcodes. You may need to adjust CSS so the shortcode output looks good in your message.
141
+
142
+ = I can't find a way to do X... =
143
+
144
+ Icegram is actively developed. If you can't find your favorite feature (or have a suggestion) contact us. We'd love to hear from you.
145
+
146
+ = I'm facing a problem and can't find a way out... =
147
+
148
+ Contact Us, provide as much detail of the problem as you can. We will try to solve the problem ASAP.
149
+
150
+ == Screenshots ==
151
+ 1. Different Icegram messages
152
+ 2. The Icegram workflow
153
+ 3. Editing an Icegram campaign - add multiple messages, edit them, targeting rules, full HTML editor, themes and more
154
+
155
+ == Upgrade Notice ==
156
+ = 1.9.20.1 =
157
+ Bug Fix release
158
+
159
+ = 1.9.20 =
160
+ Rainmaker compatibility
161
+
162
+ = 1.9.19 =
163
+ Secured Icegram from XSS vulnerability
164
+
165
+ = 1.9.18 =
166
+ Compatibility with Icegram's CTA addon and Rainmaker
167
+
168
+ = 1.9.17 =
169
+ Performance enhancements
170
+
171
+ = 1.9.16 =
172
+ Custom forms imported in Rainmaker
173
+
174
+ = 1.9.15 =
175
+ Added the Gallery of ready to use Icegram Campaigns
176
+
177
+ = 1.9.14 =
178
+ Added quick action for campaign preview.
179
+
180
+ = 1.9.13 =
181
+ revamp of popup themes - Airmail, Convert, Inspire, Persude.
182
+
183
+ = 1.9.12 =
184
+ Add new custom CSS and JS code block.
185
+
186
+ = 1.9.11.1 =
187
+ Remove warning in admin panel.
188
+
189
+ = 1.9.11 =
190
+ Compatibility with Gravity Forms.
191
+
192
+ = 1.9.10 =
193
+ Fix for schedule campaign option
194
+
195
+ = 1.9.9 =
196
+ Compatibility with Contact Form 7.
197
+
198
+ = 1.9.8.1 =
199
+ Added sprite image for close buttons and other fixes.
200
+
201
+ = 1.9.8 =
202
+ Enhanced the top Action bar position
203
+
204
+ = 1.9.7.1 =
205
+ Incorrect plugin name
206
+
207
+ = 1.9.7 =
208
+ Messengers are now responsive.Many small improvements.
209
+
210
+ = 1.9.6 =
211
+ Many small changes and other fixes.
212
+
213
+ = 1.9.5 =
214
+ Added animations for few more message types.Action bars are now responsive.
215
+
216
+ = 1.9.4 =
217
+ Bug fix release for forms.
218
+
219
+ = 1.9.3 =
220
+ Bug fix release for "Target link" not working.
221
+
222
+ = 1.9.2 =
223
+ Shortcode problems solved. New anti-spam mechanism for forms.
224
+
225
+ = 1.9.1 =
226
+ Few improvements in form functionality.
227
+
228
+ = 1.9 =
229
+ Form embed functionality improvements , Added forms styles.
230
+
231
+ = 1.8.10 =
232
+ Fixes for minified js and css. Changes for WP themes compatibility.
233
+
234
+ = 1.8.9 =
235
+ Many small changes. Plus major changes for caching compatibility.
236
+
237
+ = 1.8.8 =
238
+ Improved short code handling, WishList member compatibility and other fixes.
239
+
240
+ = 1.8.7 =
241
+ Popups now support custom background and text colors. And a handful of fixes!
242
+
243
+ = 1.8.6 =
244
+ Fix for "white screen" errors, updated device detection, more readable call to action button colors
245
+
246
+ = 1.8.5 =
247
+ Bug fix release for device targeting, preview before publish not working.
248
+
249
+ = 1.8.4 =
250
+ Popups are now responsive! Plus Visual Composer compatibility and other fixes.
251
+
252
+ = 1.8.3 =
253
+ Campaign and message duplicate feature added. Plus some other improvements.
254
+
255
+ = 1.8.2 =
256
+ Bug fix release for preview not working.
257
+
258
+ = 1.8.1 =
259
+ Recommended upgrade. Many improvements.
260
+
261
+ = 1.8 =
262
+ Target campaigns to any page with wildcard URL support in "Where" conditions and CTA Click based retargeting.
263
+
264
+ = 1.7.1 =
265
+ Dismiss admin notice provision, retargeting compatibility with caches and bug fixes.
266
+
267
+ = 1.7 =
268
+ Improvements in styling, form embeds and retargeting.
269
+
270
+ = 1.6 =
271
+ Improvements in optin form embedding, bug fixes and more. Required update.
272
+
273
+ = 1.5 =
274
+ Easy optin / subscription form parser and many other enhancements. Required update.
275
+
276
+ = 1.4 =
277
+ Many small improvements. Support for analytics added. WordPress 4.0 compatible.
278
+
279
+ = 1.3 =
280
+ 7 premium addons available now. Plus lot of improvements. Recommended upgrade.
281
+
282
+ = 1.2 =
283
+ Lots of enhancements... [WPML](http://wpml.org/?aid=21266&affiliate_key=W1YOdHyWrIjY) support, pluggable architecture, many internal changes. Do upgrade.
284
+
285
+ = 1.1.1 =
286
+ Compatibility with W3TC and Localization
287
+
288
+ = 1.1 =
289
+ First release on WordPress.org
290
+
291
+ = 1.0 =
292
+ Initial Release
293
+
294
+
295
+ == Changelog ==
296
+ = 1.9.20.1 =
297
+ * Fix: Solve "Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND), expecting ')'"
298
+
299
+ = 1.9.20 =
300
+ * Update: Rainmaker form compatibility with Icegram's Remote addon
301
+
302
+ = 1.9.19 =
303
+ * Fix: Secured Icegram from XSS vulnerability(Thanks to Ipstenu (Mika Epstein))
304
+
305
+ = 1.9.18 =
306
+ * Fix: Compatibility with Icegram's CTA addon and Rainmaker
307
+
308
+ = 1.9.17 =
309
+ * Update: Performance enhancements
310
+ * Fix: Gallery is not getting loaded with https site
311
+
312
+ = 1.9.16 =
313
+ * New: [Icegram Rainmaker Form Plugin](https://wordpress.org/plugins/icegram-rainmaker/) is the recommended method of adding forms in Icegram
314
+
315
+ = 1.9.15 =
316
+ * New: Added the Gallery of ready to use Icegram Campaigns
317
+ * Fix: Font was not getting loaded for convert theme(popup)
318
+
319
+ = 1.9.14 =
320
+ * New: Added quick action for campaign preview
321
+ * Fix: For new message delay time -1 were not getting set
322
+
323
+ = 1.9.13 =
324
+ * New: Two step - click triggered - optins
325
+ * Enhancement: Complete revamp of popup themes - Airmail, Convert, Inspire, Persude
326
+ * Fix: Clicks were not getting tracked for button[type=submit] with inner HTML
327
+
328
+ = 1.9.12 =
329
+ * New: Support for custom JS and CSS in message
330
+ * New: Added German translations
331
+ * Enhancement: Revised Addons and Docs page inside plugin
332
+ * Enhancement: Prevent false Impression count on crawling in analytics
333
+ * Fix: For an onclick popup, once the background of popup was clicked it wouldn't open again
334
+ * Fix: Home page targeting was not working properly in "Specific URL on this site" targeting
335
+
336
+ = 1.9.11.1 =
337
+ * Fix: Warning for "Illegal string offset 'option_name'"
338
+ * Fix: 'ReferenceError: icegram is not defined' on page with CF7 and no Icegram
339
+
340
+ = 1.9.11 =
341
+ * Fix: Conditional login of Gravity forms was not working
342
+
343
+ = 1.9.10 =
344
+ * Fix: Campaigns were not getting scheduled according to site's timezone
345
+
346
+ = 1.9.9 =
347
+ * Fix: CF7(Contact Form 7) Ajax submission was not working
348
+ * Fix: CF7 redirection was not working
349
+ * Fix: CF7 was changing URL after form submission
350
+
351
+
352
+ = 1.9.8.1 =
353
+ * Enhancement: Added sprite image for close buttons
354
+ * Fix: Retargeting issues with HTTP and HTTPS
355
+
356
+ = 1.9.8 =
357
+ * New: Added translation for Italian
358
+ * Update: Action Bar does not overlap header/menu of your website
359
+
360
+ = 1.9.7.1 =
361
+ * Fix: Incorrect plugin name
362
+
363
+ = 1.9.7 =
364
+ * New: Messenger messages work beautifully on mobile / small devices now!
365
+ * New: Icegram's shortcodes are now working with Text Widget
366
+ * Update: Mobile Detect Library updated to version 2.8.15
367
+ * Fix: Gravity Forms hidden fields were visible with Form embed functionality
368
+ * Fix: Slide animation was not working with some browsers
369
+ * Fix: Popup message conflicts with some lightbox plugins
370
+
371
+ = 1.9.6 =
372
+ * Fix: Popup was not getting closed when multiple popups were set on a single page
373
+ * Fix: Message was not getting close when a form was submitted in a new window
374
+ * Fix: Default editor was visible while loading campaign setting page
375
+ * Fix: Revised css of the "Support and Docs" page and made it compatibility with WordPress 4.3
376
+
377
+ = 1.9.5 =
378
+ * New: Action bar messages work beautifully on mobile / small devices now!
379
+ * New: Add Animation for few more message types
380
+
381
+ = 1.9.4 =
382
+ * Fix: Ninja Forms was showing two submit buttons with Icegram Form embed functionality
383
+ * Fix: Mailpoet hidden fields were visible with Form embed functionality
384
+ * Fix: Minor issues with form css
385
+ * Fix: Use themes default option was not working in message admin settings
386
+
387
+ = 1.9.3 =
388
+ * Fix: Redirection to "Target Link" was not working in Icegram message
389
+ * Fix: Inline form shortcode not getting preserved for message types with only inline position
390
+
391
+ = 1.9.2 =
392
+ * New: Keep spammers away with new automatic anti-spam bot checking mechanism
393
+ * Fix: Shortcodes not working in Icegram messages
394
+ * Fix: WordPress crash while creating a new post
395
+ * Update: UI improvements for form embedding
396
+
397
+ = 1.9.1 =
398
+ * Update: Retargeting option now work for campaign instead of message
399
+ * Fix: Inline form shortcode not getting preserved in message body
400
+ * Fix: Form style options not getting saved
401
+ * Fix: Minor issues with form css
402
+ * Fix: Compatibility issues of previous embed form functionality with new one
403
+
404
+ = 1.9 =
405
+ * New:Forms now comes with various form styles and multiple positions
406
+ * New:Forms also provides background and text color
407
+ * New:Forms also supports header,footer-text/HTML
408
+ * Update: Updated form embed functionality
409
+ * Fix: Homepage page targeting not working when "Lazy loading" was off
410
+
411
+ = 1.8.10 =
412
+ * Fix: Compatibility for themes with CSS class name conflicts
413
+ * Fix: Compatibility with "auto optimize" and other minification plugins
414
+ * Fix: Local site targeting not working without wildcard character
415
+
416
+ = 1.8.9 =
417
+ * New: Both body and button colors (background and foreground) can now be set
418
+ * Update: Brought back CTA Buttons default colors
419
+ * New: Lazy load Icegram messages for better compatibility with caching plugins
420
+ * Update: Updated all themes to support new theme coloring scheme
421
+ * Fix: Some alignment issues with images in popups
422
+ * Update: Minified all JS and CSS to improve performance
423
+ * Update: Auto correction for CTA links now works with tel: links
424
+
425
+ = 1.8.8 =
426
+ * New: Headlines now support shortcodes!
427
+ * Update: A message shown on click of another (using CTA actions addon), can now contain shortcodes
428
+ * Fix: Compatibility with Wishlist Member plugin
429
+ * Fix: Popup close event not triggered when clicking outside the popup - on its overlay
430
+ * Update: Automatically adds http:// in CTA links if missing
431
+
432
+ = 1.8.7 =
433
+ * New: Can now define custom background and text colors for Popups
434
+ * Fix: Button text color not showing well in some themes
435
+ * Fix: Analytics not getting tracked
436
+ * Update: Revisions to theme packs and many addons
437
+ * New: Support for Split Testing addon
438
+
439
+ = 1.8.6 =
440
+ * Fix: "Blank / White Screen of death" / Fatal error - Cannot redeclare class Mobile_Detect
441
+ * Fix: Warning for undefined index
442
+ * Update: Mobile Detect Library updated to version 2.8.11
443
+ * Update: Improvmetns in complementary colors for call to action button and button text
444
+ * Update: Action Bar's Bold theme - reduced shadow on button text
445
+
446
+ = 1.8.5 =
447
+ * New: Added a link to Form Embed Documentation for easy access
448
+ * Fix: Default mode of content editor set to visual
449
+ * Fix: Popup hiding behind header for some themes
450
+ * Fix: Device targeting rule not working on newer devices
451
+ * Fix: Preview working only after Publishing
452
+
453
+ = 1.8.4 =
454
+ * New: Popup messages work beautifully on mobile / small devices now!
455
+ * Fix: Timing problems with popups triggered via Behavior Trigger addon.
456
+ * Fix: Visual Composer compatibility
457
+
458
+ = 1.8.3 =
459
+ * NEW: Duplicate a Campaign and Message easily now - click 'duplicate' in the list view!
460
+ * Update: Using an image instead of dashicons for action bar arrows
461
+ * Update: Renamed "messenger" css class to "ig_messenger" to avoid potential overlaps
462
+ * Update: Clicking outside the popup (on the dark overlay) will close the popup
463
+
464
+ = 1.8.2 =
465
+ * Fix: Preview not working correctly
466
+
467
+ = 1.8.1 =
468
+ * NEW: Support for Icegram Remote - now run your campaigns on other sites - even non WordPress sites
469
+ * Update: Better wildcard matching in Where targeting rules for URLs
470
+ * Update: Compatibility with Avada theme
471
+ * Update: Misc UI and performance enhancements
472
+
473
+ = 1.8 =
474
+ * NEW: Target campaigns to any page with wildcard URL support in "Where" conditions
475
+ * NEW: CTA Click based retargeting to hide message in a campaign after being clicked
476
+ * NEW: Message shwon retargeting can now hide message forever - after shown once
477
+
478
+ = 1.7.1 =
479
+ * Update: Dismiss button for admin notice about bonus themes and addon
480
+ * Fix: Admin settings CSS changes, for compatibility with some themes
481
+ * Fix: Hello Bar close button not clickable
482
+ * Fix: Retargeting not working with some cache systems
483
+
484
+ = 1.7 =
485
+ * Update: Styling changes to action bar CTA button for alignment
486
+ * Update: Hello Bar styling updates to better handle forms
487
+ * Fix: Hidden field related issue while embeding subscription forms
488
+ * Fix: Retargeting not working correctly in certain cases
489
+ * Fix: Theme thumbnails missing on messages list
490
+
491
+ = 1.6 =
492
+ * Fix: Empty image tag causing display issues in Opera / IE
493
+ * Update: Form embed functionality improvements
494
+ * NEW: "Themes Pack 2014" addon - 17 themes as a bonus - available from Icegram.com
495
+ * Fix: Toast message compatibility with Behavior Triggers
496
+ * Update: JS and CSS URLs include version numbers now - better for caching
497
+ * Fix: Other minor fixes
498
+
499
+ = 1.5 =
500
+ * NEW: "Embed Form" option for easy integration with optin / mailing list / subscription form / CRM services
501
+ * NEW: Retargeting Rule: Do not show again for X number of days
502
+ * NEW: Targeting Rule: "Not Logged In" visitor
503
+ * NEW: Added support for submitting form on CTA click
504
+ * NEW: "CTA Actions" premium addon
505
+
506
+ = 1.4 =
507
+ * NEW: Targeting Rule: "Exclude pages" from a site wide campaign
508
+ * NEW: Options to cleanup Icegram data and remove shortcodes from content
509
+ * NEW: CTA button color is automatically determined based on background color
510
+ * NEW: FREE Analytics add-on (available from www.icegram.com)
511
+ * Update: This version is compatible with WordPress 4.0
512
+
513
+ = 1.3 =
514
+ * NEW: 7 Premium add-ons available
515
+ * Fix: [icegram] shortcode not working for campaigns
516
+ * Update: Improved CTA click handling
517
+ * Update: Internal changes for better performance
518
+ * NEW: Setting display time to -1 will hide the message
519
+ * Fix: Can use quotes and other special characters in headline now
520
+ * Update: #WPML Show default language message only if "Blog posts to display" is set to "All posts"
521
+ * Fix: Hide campaign and messages from public pages / search / search engines
522
+ * Fix: Other plugins adding content to messages (social media links etc)
523
+ * NEW: Clicking on any item with class "ig_cta" will trigger cta click action
524
+ * Fix: Campaigns not working on archive pages (like Shop / Categories...)
525
+ * Fix: Campaigns with multiple target pages not working
526
+ * Fix: #WPML Messages added from Campaigns page not showing on Messages page
527
+ * Update: And then some changes we are forgetting for now...
528
+
529
+ = 1.2 =
530
+ * NEW: Icegram is now fully pluggable. External plugins can add message types and themes.
531
+ * NEW: [WPML](http://wpml.org/?aid=21266&affiliate_key=W1YOdHyWrIjY) support
532
+ * Update: Icegram branding is optional
533
+ * NEW: Setting to show Icegram branding
534
+ * Fix: Popups show correctly on long pages now
535
+ * Fix: Single day schedule for message display is correctly handled now
536
+ * NEW: Rewritten message display system - can even control with JavaScript now
537
+ * Fix: For problems showing a campaign on homepage
538
+ * Update: Simplified CSS and JS
539
+ * Update: Changed custom post type names to ig_message and ig_campaign
540
+ * Update: Compatibility with All in One SEO plugin
541
+ * Update: Newsletter subscription form added
542
+ * Fix: For displaying messages via shortcode
543
+ * Update: And many more!!!
544
+
545
+
546
+ = 1.1.1 =
547
+ * Fix for crash on activation with W3 Total Cache
548
+ * Added localization / translation ability
549
+
550
+ = 1.1 =
551
+ * Loading CSS from own domain instead of Google
552
+
553
+ = 1.0 =
554
+ * Initial Release
trunk/settings.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+
4
+ if( isset( $_POST['submit'] ) ) {
5
+ if( isset( $_POST['icegram_share_love'] ) ) {
6
+ update_option( 'icegram_share_love', sanitize_text_field($_POST['icegram_share_love']) );
7
+ } else {
8
+ update_option( 'icegram_share_love', 'no' );
9
+ }
10
+ if( isset( $_POST['icegram_cache_compatibility'] ) ) {
11
+ update_option( 'icegram_cache_compatibility', sanitize_text_field($_POST['icegram_cache_compatibility']) );
12
+ } else {
13
+ update_option( 'icegram_cache_compatibility', 'no' );
14
+ }
15
+ }
16
+
17
+ ?>
18
+ <div class="wrap">
19
+ <h2><?php _e( "Icegram Settings", "icegram" ) ?></h2>
20
+ <form name="icegram_settings" method="POST" action="<?php echo admin_url(); ?>edit.php?post_type=ig_campaign&page=icegram-settings">
21
+ <table class="form-table">
22
+ <tr>
23
+ <th scope="row"><?php _e( 'Share Icegram', 'icegram' ) ?></th>
24
+ <td>
25
+ <label for="icegram_share_love">
26
+ <input type="checkbox" name="icegram_share_love" id="icegram_share_love"/ value="yes" <?php checked('yes', get_option('icegram_share_love')); ?> />
27
+ <?php _e( 'Show "Powered by" link', 'icegram' ); ?>
28
+ </label>
29
+ </td>
30
+ </tr>
31
+ <tr>
32
+ <th scope="row"><?php _e( 'Cache Friendly?', 'icegram' ) ?></th>
33
+ <td>
34
+ <label for="icegram_cache_compatibility">
35
+ <input type="checkbox" name="icegram_cache_compatibility" id="icegram_cache_compatibility"/ value="yes" <?php checked('yes', get_option('icegram_cache_compatibility')); ?> />
36
+ <?php _e( 'Turn on "Lazy Load" - load Icegram scripts and messages after page load to avoid caching problems.', 'icegram' ); ?>
37
+ </label>
38
+ </td>
39
+ </tr>
40
+ </table>
41
+ <?php submit_button(); ?>
42
+ </form>
43
+ </div>
44
+ <?php do_action( 'icegram_settings_after' ); ?>
trunk/updates/icegram-update-1.2.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
+
5
+ /*
6
+ Proper structuring of message data fields in case of animation and theme key-value
7
+ Changed the array keys
8
+ title -> headline
9
+ promo_image -> icon
10
+ */
11
+ global $wpdb, $wp_rewrite;
12
+
13
+ $results = $wpdb->get_results( "SELECT * FROM {$wpdb->postmeta} WHERE meta_key LIKE 'icegram_message_%'" );
14
+
15
+ foreach ( $results as $result ) {
16
+
17
+ $message_data = unserialize( $result->meta_value );
18
+ if( is_array( $message_data ) && !empty( $message_data ) ) {
19
+ $message_type = $message_data['type'];
20
+ if( isset( $message_data['theme'] ) && is_array( $message_data['theme'] ) && !empty( $message_data['theme'][$message_type] ) ) {
21
+ $message_data['theme'] = $message_data['theme'][$message_type];
22
+ }
23
+ if( isset( $message_data['animation'] ) && is_array( $message_data['animation'] ) ) {
24
+ if( !empty( $message_data['animation'][$message_type] ) ) {
25
+ $message_data['animation'] = $message_data['animation'][$message_type];
26
+ } else {
27
+ unset( $message_data['animation'] );
28
+ }
29
+ }
30
+ if( isset( $message_data['title'] ) ) {
31
+ $message_data['headline'] = $message_data['title'];
32
+ unset( $message_data['title'] );
33
+ }
34
+ if( isset( $message_data['promo_image'] ) ) {
35
+ $message_data['icon'] = $message_data['promo_image'];
36
+ unset( $message_data['promo_image'] );
37
+ }
38
+ update_post_meta( $result->post_id, $result->meta_key, $message_data );
39
+ }
40
+
41
+ }
42
+
43
+ // Change post_type for messages and campaigns
44
+ $old_post_types = array('message', 'campaign');
45
+ foreach ($old_post_types as $type) {
46
+
47
+ $q = 'numberposts=-1&post_status=any&post_type='.$type;
48
+ $items = get_posts($q);
49
+ foreach ($items as $item) {
50
+ $update['ID'] = $item->ID;
51
+ $update['post_type'] = "ig_{$type}";
52
+ wp_update_post( $update );
53
+ }
54
+
55
+ /*
56
+ $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET post_type = REPLACE(post_type, %s, %s)
57
+ WHERE post_type LIKE %s", $type, 'ig_'.$type, $type ) );
58
+ $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET guid = REPLACE(guid, %s, %s)
59
+ WHERE guid LIKE %s", "post_type={$type}", "post_type=ig_{$type}", "%post_type={$type}%" ) );
60
+
61
+ $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->posts} SET guid = REPLACE(guid, %s, %s)
62
+ WHERE guid LIKE %s", "/{$type}/", "/ig_{$type}/", "%/{$type}/%" ) );
63
+ */
64
+ }
65
+
66
+ if ($wp_rewrite) {
67
+ $wp_rewrite->flush_rules();
68
+ }
69
+
70
+ update_option( 'icegram_db_version', '1.2' );
trunk/wpml-config.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <wpml-config>
2
+ <custom-types>
3
+ <custom-type translate="1">ig_message</custom-type>
4
+ <custom-type translate="0">ig_campaign</custom-type>
5
+ </custom-types>
6
+ </wpml-config>