Q2W3 Fixed Widget - Version 5.0

Version Description

  • Optimized client side performance. Detection of page changes is now based on MutationObserver API. Widget parameters recount is fired only when needed! Refresh interval option used only for campatibility with old browsers (no MutationObserver API support).
  • Improved compatibility with caching plugins (W3TC, Autoptimize and etc.). No need to exclude jQuery and plugin files from cache!
  • Async/Defer script load method support
  • Added Disable Width option
Download this release

Release Info

Developer Max Bond
Plugin Icon 128x128 Q2W3 Fixed Widget
Version 5.0
Comparing to
See all releases

Code changes from version 4.1 to 5.0

js/q2w3-fixed-widget.js CHANGED
@@ -1,20 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  function q2w3_sidebar(options) {
2
 
 
 
3
  if ( !options.widgets) return false;
4
 
5
  if ( options.widgets.length < 1) return false;
6
 
7
  if ( !options.sidebar) options.sidebar = 'q2w3-default-sidebar';
8
-
9
  function widget() {} // widget class
10
 
11
  var widgets = new Array();
12
 
13
  var window_height = jQuery(window).height();
14
  var document_height = jQuery(document).height();
15
- var fixed_margin_top = options.margin_top ;
16
-
17
- if (jQuery('#wpadminbar').is(":visible")) { // WordPress admin bar
18
  fixed_margin_top = options.margin_top + jQuery('#wpadminbar').height();
19
  }
20
 
@@ -54,13 +112,14 @@ function q2w3_sidebar(options) {
54
  next_widgets_height += widgets[i].height;
55
  if ( !widget_parent_container ) {
56
  widget_parent_container = widget_obj.parent();
 
57
  widget_parent_container.css('height','');
58
  widget_parent_container.height(widget_parent_container.height());
59
  }
60
  }
61
  }
62
 
63
- jQuery(window).off('load.' + options.sidebar + ' scroll.' + options.sidebar);
64
 
65
  for ( var i = 0; i < widgets.length; i++ ) {
66
  if (widgets[i]) fixed_widget(widgets[i]);
@@ -71,68 +130,72 @@ function q2w3_sidebar(options) {
71
  var trigger_top = widget.offset_top - widget.fixed_margin_top;
72
  var trigger_bottom = document_height - options.margin_bottom;
73
 
74
- if ( options.stop_id ) {
75
  trigger_bottom = jQuery('#' + options.stop_id).offset().top - options.margin_bottom;
76
  }
77
-
78
  var widget_width; if ( options.width_inherit ) widget_width = 'inherit'; else widget_width = widget.obj.css('width');
79
 
80
  var style_applied_top = false;
81
  var style_applied_bottom = false;
82
  var style_applied_normal = false;
83
 
84
- jQuery(window).on('scroll.' + options.sidebar, function (event) {
85
- var scroll = jQuery(this).scrollTop();
86
- if ( scroll + widget.fixed_margin_bottom >= trigger_bottom ) { // fixed bottom
87
- if ( !style_applied_bottom ) {
88
- widget.obj.css('position', 'fixed');
89
- widget.obj.css('top', '');
90
- widget.obj.css('width', widget_width);
91
- if(jQuery('#'+widget.clone_id).length <= 0) widget.obj.before(widget.clone);
92
- style_applied_bottom = true;
93
- style_applied_top = false;
94
- style_applied_normal = false;
95
- }
96
- widget.obj.css('bottom', scroll + window_height + widget.next_widgets_height - trigger_bottom);
97
- } else if ( scroll >= trigger_top ) { // fixed top
98
- if ( !style_applied_top ) {
99
- widget.obj.css('position', 'fixed');
100
- widget.obj.css('top', widget.fixed_margin_top);
101
- widget.obj.css('bottom', '');
102
- widget.obj.css('width', widget_width);
103
- if(jQuery('#'+widget.clone_id).length <= 0) widget.obj.before(widget.clone);
104
- style_applied_top = true;
105
- style_applied_bottom = false;
106
- style_applied_normal = false;
107
- }
108
- } else { // normal
109
- if ( !style_applied_normal ) {
110
  widget.obj.css('position', '');
111
  widget.obj.css('top', '');
 
112
  widget.obj.css('width', '');
113
- if(jQuery('#'+widget.clone_id).length > 0) jQuery('#'+widget.clone_id).remove();
 
 
 
114
  style_applied_normal = true;
115
  style_applied_top = false;
116
- style_applied_bottom = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
  }
119
  }).trigger('scroll.' + options.sidebar);
120
 
121
- jQuery(window).on('resize', function() {
122
- if ( jQuery(window).width() <= options.screen_max_width ) { // jQuery(window).width() - 17px - browser scroll width ???
123
- jQuery(window).off('load.' + options.sidebar + ' scroll.' + options.sidebar);
124
- widget.obj.css('position', '');
125
- widget.obj.css('top', '');
126
- widget.obj.css('width', '');
127
- widget.obj.css('margin', '');
128
- widget.obj.css('padding', '');
129
- if(jQuery('#'+widget.clone_id).length > 0) jQuery('#'+widget.clone_id).remove();
130
- style_applied_normal = true;
131
- style_applied_top = false;
132
- style_applied_bottom = false;
133
- }
134
- }).trigger('resize');
135
-
136
  }
137
 
138
  }
1
+ if ( q2w3_sidebar_options && q2w3_sidebar_options.length > 0 ) {
2
+ if ( window.jQuery ) {
3
+ var q2w3Refresh = false;
4
+ for ( var i = 0; i < q2w3_sidebar_options.length; i++ ) {
5
+ if ( q2w3_sidebar_options[i].window_load_hook ) {
6
+ var init = 'jQuery(window).load(function(){q2w3_sidebar_init(q2w3_sidebar_options[' + i + '])});';
7
+ } else {
8
+ var init = 'jQuery(document).ready(function(){q2w3_sidebar_init(q2w3_sidebar_options[' + i + '])});';
9
+ }
10
+ }
11
+ eval(init);
12
+ } else {
13
+ console.log('jQuery is not loaded!');
14
+ }
15
+ }
16
+
17
+ function q2w3_sidebar_init(options) {
18
+ q2w3_sidebar(options);
19
+ jQuery(window).on('resize', function(){q2w3_sidebar(options)});
20
+ var MutationObserver = (function(){
21
+ var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
22
+ for ( var i=0; i < prefixes.length; i++ ) {
23
+ if ( prefixes[i] + 'MutationObserver' in window ) {
24
+ return window[prefixes[i] + 'MutationObserver'];
25
+ }
26
+ }
27
+ return false;
28
+ }());
29
+ if ( MutationObserver ) {
30
+ var htmlObserver = new MutationObserver(function(mutations) {
31
+ q2w3Refresh = false
32
+ mutations.forEach( function(mutation) {
33
+ if ( q2w3_exclude_mutations_array(options.widgets).indexOf(mutation.target.id) == -1 && mutation.target.className.indexOf('q2w3-fixed-widget-container') == -1 ) {
34
+ q2w3Refresh = true;
35
+ }
36
+ });
37
+ });
38
+ htmlObserver.observe(document.body, {childList: true, attributes: true, attributeFilter:['style', 'class'], subtree: true});
39
+ setInterval(function(){
40
+ if ( q2w3Refresh ) { q2w3_sidebar(options); q2w3Refresh = false; } // console.log('Q2W3 counter:' + i++);
41
+ }, 1000);
42
+ } else {
43
+ console.log('MutationObserver not supported!');
44
+ if ( options.refresh_interval > 0 ) setInterval(function(){q2w3_sidebar(options)}, options.refresh_interval);
45
+ }
46
+ }
47
+
48
+ function q2w3_exclude_mutations_array(widgets) {
49
+ var out = new Array();
50
+ for ( var i = 0; i < widgets.length; i++ ) {
51
+ out.push(widgets[i]);
52
+ out.push(widgets[i] + '_clone');
53
+ }
54
+ return out;
55
+ }
56
+
57
  function q2w3_sidebar(options) {
58
 
59
+ if ( !options ) return false;
60
+
61
  if ( !options.widgets) return false;
62
 
63
  if ( options.widgets.length < 1) return false;
64
 
65
  if ( !options.sidebar) options.sidebar = 'q2w3-default-sidebar';
66
+
67
  function widget() {} // widget class
68
 
69
  var widgets = new Array();
70
 
71
  var window_height = jQuery(window).height();
72
  var document_height = jQuery(document).height();
73
+ var fixed_margin_top = options.margin_top;
74
+
75
+ if ( jQuery('#wpadminbar').is(':visible') ) { // WordPress admin bar
76
  fixed_margin_top = options.margin_top + jQuery('#wpadminbar').height();
77
  }
78
 
112
  next_widgets_height += widgets[i].height;
113
  if ( !widget_parent_container ) {
114
  widget_parent_container = widget_obj.parent();
115
+ widget_parent_container.addClass('q2w3-fixed-widget-container');
116
  widget_parent_container.css('height','');
117
  widget_parent_container.height(widget_parent_container.height());
118
  }
119
  }
120
  }
121
 
122
+ jQuery(window).off('load.' + options.sidebar + ' scroll.' + options.sidebar); //+ ' resize.' + options.sidebar
123
 
124
  for ( var i = 0; i < widgets.length; i++ ) {
125
  if (widgets[i]) fixed_widget(widgets[i]);
130
  var trigger_top = widget.offset_top - widget.fixed_margin_top;
131
  var trigger_bottom = document_height - options.margin_bottom;
132
 
133
+ if ( options.stop_id && jQuery('#' + options.stop_id).length ) {
134
  trigger_bottom = jQuery('#' + options.stop_id).offset().top - options.margin_bottom;
135
  }
136
+
137
  var widget_width; if ( options.width_inherit ) widget_width = 'inherit'; else widget_width = widget.obj.css('width');
138
 
139
  var style_applied_top = false;
140
  var style_applied_bottom = false;
141
  var style_applied_normal = false;
142
 
143
+ jQuery(window).on('scroll.' + options.sidebar, function(event) {
144
+ if ( jQuery(window).width() <= options.screen_max_width || jQuery(window).height() <= options.screen_max_height ) {
145
+ if ( ! style_applied_normal ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  widget.obj.css('position', '');
147
  widget.obj.css('top', '');
148
+ widget.obj.css('bottom', '');
149
  widget.obj.css('width', '');
150
+ widget.obj.css('margin', '');
151
+ widget.obj.css('padding', '');
152
+ widget_obj.parent().css('height','');
153
+ if ( jQuery('#'+widget.clone_id).length > 0 ) jQuery('#'+widget.clone_id).remove();
154
  style_applied_normal = true;
155
  style_applied_top = false;
156
+ style_applied_bottom = false;
157
+ }
158
+ //console.log('jQuery(window).width() <= options.screen_max_width');
159
+ } else {
160
+ var scroll = jQuery(this).scrollTop();
161
+ //console.log('Srcoll: ' + scroll + ' | Trigger top: ' + trigger_top + ' | Trigger bottom: ' + trigger_bottom);
162
+ if ( scroll + widget.fixed_margin_bottom >= trigger_bottom ) { // fixed bottom
163
+ if ( !style_applied_bottom ) {
164
+ widget.obj.css('position', 'fixed');
165
+ widget.obj.css('top', '');
166
+ widget.obj.css('width', widget_width);
167
+ if(jQuery('#'+widget.clone_id).length <= 0) widget.obj.before(widget.clone);
168
+ style_applied_bottom = true;
169
+ style_applied_top = false;
170
+ style_applied_normal = false;
171
+ }
172
+ widget.obj.css('bottom', scroll + window_height + widget.next_widgets_height - trigger_bottom);
173
+ } else if ( scroll >= trigger_top ) { // fixed top
174
+ if ( !style_applied_top ) {
175
+ widget.obj.css('position', 'fixed');
176
+ widget.obj.css('top', widget.fixed_margin_top);
177
+ widget.obj.css('bottom', '');
178
+ widget.obj.css('width', widget_width);
179
+ if(jQuery('#'+widget.clone_id).length <= 0) widget.obj.before(widget.clone);
180
+ style_applied_top = true;
181
+ style_applied_bottom = false;
182
+ style_applied_normal = false;
183
+ }
184
+ } else { // normal
185
+ if ( !style_applied_normal ) {
186
+ widget.obj.css('position', '');
187
+ widget.obj.css('top', '');
188
+ widget.obj.css('bottom', '');
189
+ widget.obj.css('width', '');
190
+ if(jQuery('#'+widget.clone_id).length > 0) jQuery('#'+widget.clone_id).remove();
191
+ style_applied_normal = true;
192
+ style_applied_top = false;
193
+ style_applied_bottom = false;
194
+ }
195
  }
196
  }
197
  }).trigger('scroll.' + options.sidebar);
198
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  }
200
 
201
  }
js/q2w3-fixed-widget.min.js CHANGED
@@ -1 +1 @@
1
- function q2w3_sidebar(e){function i(){}function o(i){var o=i.offset_top-i.fixed_margin_top,t=s-e.margin_bottom;e.stop_id&&(t=jQuery("#"+e.stop_id).offset().top-e.margin_bottom);var d;d=e.width_inherit?"inherit":i.obj.css("width");var n=!1,g=!1,b=!1;jQuery(window).on("scroll."+e.sidebar,function(e){var s=jQuery(this).scrollTop();s+i.fixed_margin_bottom>=t?(g||(i.obj.css("position","fixed"),i.obj.css("top",""),i.obj.css("width",d),jQuery("#"+i.clone_id).length<=0&&i.obj.before(i.clone),g=!0,n=!1,b=!1),i.obj.css("bottom",s+r+i.next_widgets_height-t)):s>=o?n||(i.obj.css("position","fixed"),i.obj.css("top",i.fixed_margin_top),i.obj.css("bottom",""),i.obj.css("width",d),jQuery("#"+i.clone_id).length<=0&&i.obj.before(i.clone),n=!0,g=!1,b=!1):b||(i.obj.css("position",""),i.obj.css("top",""),i.obj.css("width",""),jQuery("#"+i.clone_id).length>0&&jQuery("#"+i.clone_id).remove(),b=!0,n=!1,g=!1)}).trigger("scroll."+e.sidebar),jQuery(window).on("resize",function(){jQuery(window).width()<=e.screen_max_width&&(jQuery(window).off("load."+e.sidebar+" scroll."+e.sidebar),i.obj.css("position",""),i.obj.css("top",""),i.obj.css("width",""),i.obj.css("margin",""),i.obj.css("padding",""),jQuery("#"+i.clone_id).length>0&&jQuery("#"+i.clone_id).remove(),b=!0,n=!1,g=!1)}).trigger("resize")}if(!e.widgets)return!1;if(e.widgets.length<1)return!1;e.sidebar||(e.sidebar="q2w3-default-sidebar");var t=new Array,r=jQuery(window).height(),s=jQuery(document).height(),d=e.margin_top;jQuery("#wpadminbar").is(":visible")&&(d=e.margin_top+jQuery("#wpadminbar").height()),jQuery(".q2w3-widget-clone-"+e.sidebar).remove();for(var n=0;n<e.widgets.length;n++)widget_obj=jQuery("#"+e.widgets[n]),widget_obj.css("position",""),widget_obj.attr("id")?(t[n]=new i,t[n].obj=widget_obj,t[n].clone=widget_obj.clone(),t[n].clone.children().remove(),t[n].clone_id=widget_obj.attr("id")+"_clone",t[n].clone.addClass("q2w3-widget-clone-"+e.sidebar),t[n].clone.attr("id",t[n].clone_id),t[n].clone.css("height",widget_obj.height()),t[n].clone.css("visibility","hidden"),t[n].offset_top=widget_obj.offset().top,t[n].fixed_margin_top=d,t[n].height=widget_obj.outerHeight(!0),t[n].fixed_margin_bottom=d+t[n].height,d+=t[n].height):t[n]=!1;for(var g,b=0,n=t.length-1;n>=0;n--)t[n]&&(t[n].next_widgets_height=b,t[n].fixed_margin_bottom+=b,b+=t[n].height,g||(g=widget_obj.parent(),g.css("height",""),g.height(g.height())));jQuery(window).off("load."+e.sidebar+" scroll."+e.sidebar);for(var n=0;n<t.length;n++)t[n]&&o(t[n])}
1
+ function q2w3_sidebar_init(a){q2w3_sidebar(a),jQuery(window).on("resize",function(){q2w3_sidebar(a)});var b=function(){for(var a=["WebKit","Moz","O","Ms",""],b=0;b<a.length;b++)if(a[b]+"MutationObserver"in window)return window[a[b]+"MutationObserver"];return!1}();if(b){var c=new b(function(b){q2w3Refresh=!1,b.forEach(function(b){q2w3_exclude_mutations_array(a.widgets).indexOf(b.target.id)==-1&&b.target.className.indexOf("q2w3-fixed-widget-container")==-1&&(q2w3Refresh=!0)})});c.observe(document.body,{childList:!0,attributes:!0,attributeFilter:["style","class"],subtree:!0}),setInterval(function(){q2w3Refresh&&(q2w3_sidebar(a),q2w3Refresh=!1)},1e3)}else console.log("MutationObserver not supported!"),a.refresh_interval>0&&setInterval(function(){q2w3_sidebar(a)},a.refresh_interval)}function q2w3_exclude_mutations_array(a){for(var b=new Array,c=0;c<a.length;c++)b.push(a[c]),b.push(a[c]+"_clone");return b}function q2w3_sidebar(a){function b(){}function j(b){var c=b.offset_top-b.fixed_margin_top,f=e-a.margin_bottom;a.stop_id&&jQuery("#"+a.stop_id).length&&(f=jQuery("#"+a.stop_id).offset().top-a.margin_bottom);var g;g=a.width_inherit?"inherit":b.obj.css("width");var h=!1,i=!1,j=!1;jQuery(window).on("scroll."+a.sidebar,function(e){if(jQuery(window).width()<=a.screen_max_width||jQuery(window).height()<=a.screen_max_height)j||(b.obj.css("position",""),b.obj.css("top",""),b.obj.css("bottom",""),b.obj.css("width",""),b.obj.css("margin",""),b.obj.css("padding",""),widget_obj.parent().css("height",""),jQuery("#"+b.clone_id).length>0&&jQuery("#"+b.clone_id).remove(),j=!0,h=!1,i=!1);else{var k=jQuery(this).scrollTop();k+b.fixed_margin_bottom>=f?(i||(b.obj.css("position","fixed"),b.obj.css("top",""),b.obj.css("width",g),jQuery("#"+b.clone_id).length<=0&&b.obj.before(b.clone),i=!0,h=!1,j=!1),b.obj.css("bottom",k+d+b.next_widgets_height-f)):k>=c?h||(b.obj.css("position","fixed"),b.obj.css("top",b.fixed_margin_top),b.obj.css("bottom",""),b.obj.css("width",g),jQuery("#"+b.clone_id).length<=0&&b.obj.before(b.clone),h=!0,i=!1,j=!1):j||(b.obj.css("position",""),b.obj.css("top",""),b.obj.css("bottom",""),b.obj.css("width",""),jQuery("#"+b.clone_id).length>0&&jQuery("#"+b.clone_id).remove(),j=!0,h=!1,i=!1)}}).trigger("scroll."+a.sidebar)}if(!a)return!1;if(!a.widgets)return!1;if(a.widgets.length<1)return!1;a.sidebar||(a.sidebar="q2w3-default-sidebar");var c=new Array,d=jQuery(window).height(),e=jQuery(document).height(),f=a.margin_top;jQuery("#wpadminbar").is(":visible")&&(f=a.margin_top+jQuery("#wpadminbar").height()),jQuery(".q2w3-widget-clone-"+a.sidebar).remove();for(var g=0;g<a.widgets.length;g++)widget_obj=jQuery("#"+a.widgets[g]),widget_obj.css("position",""),widget_obj.attr("id")?(c[g]=new b,c[g].obj=widget_obj,c[g].clone=widget_obj.clone(),c[g].clone.children().remove(),c[g].clone_id=widget_obj.attr("id")+"_clone",c[g].clone.addClass("q2w3-widget-clone-"+a.sidebar),c[g].clone.attr("id",c[g].clone_id),c[g].clone.css("height",widget_obj.height()),c[g].clone.css("visibility","hidden"),c[g].offset_top=widget_obj.offset().top,c[g].fixed_margin_top=f,c[g].height=widget_obj.outerHeight(!0),c[g].fixed_margin_bottom=f+c[g].height,f+=c[g].height):c[g]=!1;for(var i,h=0,g=c.length-1;g>=0;g--)c[g]&&(c[g].next_widgets_height=h,c[g].fixed_margin_bottom+=h,h+=c[g].height,i||(i=widget_obj.parent(),i.addClass("q2w3-fixed-widget-container"),i.css("height",""),i.height(i.height())));jQuery(window).off("load."+a.sidebar+" scroll."+a.sidebar);for(var g=0;g<c.length;g++)c[g]&&j(c[g])}if(q2w3_sidebar_options&&q2w3_sidebar_options.length>0)if(window.jQuery){for(var q2w3Refresh=!1,i=0;i<q2w3_sidebar_options.length;i++)if(q2w3_sidebar_options[i].window_load_hook)var init="jQuery(window).load(function(){q2w3_sidebar_init(q2w3_sidebar_options["+i+"])});";else var init="jQuery(document).ready(function(){q2w3_sidebar_init(q2w3_sidebar_options["+i+"])});";eval(init)}else console.log("jQuery is not loaded!");
lang/q2w3-fixed-widget-ru_RU.mo CHANGED
Binary file
lang/q2w3-fixed-widget-ru_RU.po CHANGED
@@ -1,191 +1,242 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Q2W3 Fixed Widget\n"
4
- "POT-Creation-Date: 2016-07-05 16:38+0300\n"
5
- "PO-Revision-Date: 2016-07-05 16:42+0300\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: ru_RU\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.7.1\n"
13
  "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
14
  "X-Poedit-Basepath: .\n"
15
- "X-Poedit-SearchPath-0: c:\\Program Files (x86)\\Zend\\Apache2\\htdocs\\q2w3.ru-dev\\wp-content"
16
- "\\plugins\\q2w3-fixed-widget\n"
17
 
18
- #: c:\Program Files
19
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:180
20
  msgid "Fixed widget"
21
  msgstr "Зафиксировать виджет"
22
 
23
- #: c:\Program Files
24
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:222
25
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:316
26
  msgid "Fixed Widget Options"
27
  msgstr "Фикс. Виджеты"
28
 
29
- #: c:\Program Files
30
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:304
31
  msgid "General Options"
32
  msgstr "Основные настройки"
33
 
34
- #: c:\Program Files
35
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:306
36
  msgid "Compatibility"
37
  msgstr "Совместимость"
38
 
39
- #: c:\Program Files
40
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:308
41
  msgid "Custom IDs"
42
  msgstr "Произвольные идентификаторы"
43
 
44
- #: c:\Program Files
45
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:310
46
  msgid "Help for users"
47
  msgstr "Помощь пользователям"
48
 
49
- #: c:\Program Files
50
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:312
51
  msgid "Help for developer"
52
  msgstr "Помощь разработчику"
53
 
54
- #: c:\Program Files
55
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:320
56
  msgid "Settings saved."
57
  msgstr "Настройки сохранены."
58
 
59
- #: c:\Program Files
60
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:346
61
  msgid "Save Changes"
62
  msgstr "Сохранить"
63
 
64
- #: c:\Program Files
65
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:360
66
  msgid "Margin Top:"
67
  msgstr "Верхний отступ:"
68
 
69
- #: c:\Program Files
70
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:360
71
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:362
72
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:368
 
73
  msgid "px"
74
  msgstr "пикс."
75
 
76
- #: c:\Program Files
77
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:362
78
  msgid "Margin Bottom:"
79
  msgstr "Нижний отступ:"
80
 
81
- #: c:\Program Files
82
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:364
83
  msgid "Stop ID:"
84
  msgstr "Стоп ID:"
85
 
86
- #: c:\Program Files
87
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:364
88
- msgid "HTML ID where the widget should stop floating, for example a footer. # - not needed"
 
 
89
  msgstr ""
90
- "Здесь необходимо указать значение атрибута id html-элемента на уровне которого необходимо остановить "
91
- "виджет. ID указывается без знака #! "
92
 
93
- #: c:\Program Files
94
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:366
95
  msgid "Refresh interval:"
96
  msgstr "Интервал обновления:"
97
 
98
- #: c:\Program Files
99
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:366
100
  msgid "milliseconds"
101
  msgstr "миллисекунды"
102
 
103
- #: c:\Program Files
104
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:366
105
- msgid "Set 0 to disable."
106
- msgstr "Установите 0, чтобы отключить пересчет параметров"
107
-
108
- #: c:\Program Files
109
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:368
110
- msgid "Disable plugin if screen width less then:"
111
- msgstr "Отключить плагин, если размер окна меньше чем:"
112
 
113
- #: c:\Program Files
114
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:368
115
- msgid "Use this option to disable plugin on portable devices"
116
- msgstr "Используйте эту опцию для отключения плагина на мобильных устройствах"
117
 
118
- #: c:\Program Files
119
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  msgid "Custom HTML IDs (each one on a new line):"
121
  msgstr ""
122
- "HTML-идентификаторы статических виджетов и прочих нестандартных элементов (каждый на новой строке):"
 
123
 
124
- #: c:\Program Files
125
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:380
126
  msgid "Auto fix widget id:"
127
  msgstr "Автоматически исправлять id виджетов:"
128
 
129
- #: c:\Program Files
130
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:382
131
  msgid "Enable plugin for logged in users only:"
132
  msgstr "Только зарегистрированные пользователи:"
133
 
134
- #: c:\Program Files
135
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:382
136
  msgid "Enable this option for debug purposes (frontend problems and etc.)"
137
  msgstr "Используйте для отладки стилей, скриптов"
138
 
139
- #: c:\Program Files
140
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:384
141
  msgid "Inherit widget width from the parent container:"
142
- msgstr "Наследовать ширину фиксированного виджета:"
143
 
144
- #: c:\Program Files
145
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:384
146
  msgid "Enable this option for themes with responsive sidebar"
147
- msgstr "Задействуйте эту опцию, если ширина сайдбара вашей темы меняется динамически"
 
148
 
149
- #: c:\Program Files
150
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:386
151
  msgid "Use jQuery(window).load() hook:"
152
  msgstr "Вкл. jQuery(window).load():"
153
 
154
- #: c:\Program Files
155
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:386
156
- msgid "Enable this option only if you have problems with other scroll oriented javascript code"
 
 
157
  msgstr "Задействуйте эту опцию в случае проблем с другими скриптами"
158
 
159
- #: c:\Program Files
160
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:388
161
  msgid "widget_display_callback hook priority:"
162
  msgstr "Приоритет хука widget_display_callback:"
163
 
164
- #: c:\Program Files
165
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:394
166
  msgid "RATE THE PLUGIN"
167
  msgstr "ОЦЕНИТЬ ПЛАГИН"
168
 
169
- #: c:\Program Files
170
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:402
171
  msgid "Support forums:"
172
  msgstr "Форумы поддержки:"
173
 
174
- #: c:\Program Files
175
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:404
176
  msgid "English (wordpress.org)"
177
  msgstr "Английский (wordpress.org)"
178
 
179
- #: c:\Program Files
180
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:406
181
  msgid "Russian (www.q2w3.ru)"
182
  msgstr "Русский (www.q2w3.ru)"
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  #~ msgid "Screen Max Width:"
185
  #~ msgstr "Ширина окна браузера:"
186
 
187
- #~ msgid "Plugin will be disabled when browser window width equals or less then specified value"
188
- #~ msgstr "Плагин будет отключен, если ширина окна браузера меньше указанного значения"
 
 
 
 
189
 
190
  #~ msgid "English"
191
  #~ msgstr "Английский (wordpress.org)"
@@ -194,20 +245,21 @@ msgstr "Русский (www.q2w3.ru)"
194
  #~ msgstr "Русский (www.q2w3.ru)"
195
 
196
  #~ msgid ""
197
- #~ "Use this option only if you have problems with <a href=\"http://wordpress.org/support/topic/"
198
- #~ "doesnt-work-with-infinte-scroll-for-widget-scripts\" target=\"_blank\">other scroll oriented "
199
- #~ "javascript code</a>"
200
  #~ msgstr ""
201
- #~ "Используйте эту опцию только в случае проблем с <a href=\"http://wordpress.org/support/topic/"
202
- #~ "doesnt-work-with-infinte-scroll-for-widget-scripts\" target=\"_blank\">другими скриптами</a>"
 
203
 
204
  #~ msgid "Disable plugin on phone devices:"
205
  #~ msgstr "Отключить плагин на мобильных:"
206
 
207
  #~ msgid "Option depricated. Use Screen Max Width instead!"
208
  #~ msgstr ""
209
- #~ "Опция устарела и будет удалена в следующей версии! Вместо нее используйте опцию \"Ширина окна "
210
- #~ "браузера\""
211
 
212
  #~ msgid "Disable plugin on tablet devices:"
213
  #~ msgstr "Отключить плагин на планшетах:"
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Q2W3 Fixed Widget\n"
4
+ "POT-Creation-Date: 2016-08-14 18:05+0300\n"
5
+ "PO-Revision-Date: 2016-08-14 18:08+0300\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: ru_RU\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 1.8.8\n"
13
  "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
14
  "X-Poedit-Basepath: .\n"
15
+ "X-Poedit-SearchPath-0: c:/Program Files (x86)/Zend/Apache2/htdocs/q2w3.ru-"
16
+ "dev/wp-content/plugins/q2w3-fixed-widget\n"
17
 
18
+ #: c:/Program Files
19
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:180
20
  msgid "Fixed widget"
21
  msgstr "Зафиксировать виджет"
22
 
23
+ #: c:/Program Files
24
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:222
25
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:320
26
  msgid "Fixed Widget Options"
27
  msgstr "Фикс. Виджеты"
28
 
29
+ #: c:/Program Files
30
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:308
31
  msgid "General Options"
32
  msgstr "Основные настройки"
33
 
34
+ #: c:/Program Files
35
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:310
36
  msgid "Compatibility"
37
  msgstr "Совместимость"
38
 
39
+ #: c:/Program Files
40
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:312
41
  msgid "Custom IDs"
42
  msgstr "Произвольные идентификаторы"
43
 
44
+ #: c:/Program Files
45
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:314
46
  msgid "Help for users"
47
  msgstr "Помощь пользователям"
48
 
49
+ #: c:/Program Files
50
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:316
51
  msgid "Help for developer"
52
  msgstr "Помощь разработчику"
53
 
54
+ #: c:/Program Files
55
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:324
56
  msgid "Settings saved."
57
  msgstr "Настройки сохранены."
58
 
59
+ #: c:/Program Files
60
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:350
61
  msgid "Save Changes"
62
  msgstr "Сохранить"
63
 
64
+ #: c:/Program Files
65
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:364
66
  msgid "Margin Top:"
67
  msgstr "Верхний отступ:"
68
 
69
+ #: c:/Program Files
70
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:364
71
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:366
72
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:372
73
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:374
74
  msgid "px"
75
  msgstr "пикс."
76
 
77
+ #: c:/Program Files
78
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:366
79
  msgid "Margin Bottom:"
80
  msgstr "Нижний отступ:"
81
 
82
+ #: c:/Program Files
83
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:368
84
  msgid "Stop ID:"
85
  msgstr "Стоп ID:"
86
 
87
+ #: c:/Program Files
88
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:368
89
+ msgid ""
90
+ "Here you need to provide html tag id. The position of that html element will "
91
+ "determine margin bottom value."
92
  msgstr ""
93
+ "Здесь необходимо ввести id html-элемента. Позиция этого html-элемента будет "
94
+ "динамически определять значение нижнего отступа."
95
 
96
+ #: c:/Program Files
97
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:370
98
  msgid "Refresh interval:"
99
  msgstr "Интервал обновления:"
100
 
101
+ #: c:/Program Files
102
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:370
103
  msgid "milliseconds"
104
  msgstr "миллисекунды"
105
 
106
+ #: c:/Program Files
107
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:370
108
+ msgid ""
109
+ "Time interval used to recalculate sticky widget parameters. Set 0 to "
110
+ "completely disable."
111
+ msgstr ""
112
+ "Интервал пересчета параметров виджета. Чем меньше интервал, тем больше "
113
+ "нагрузка на производительность браузера. Не рекомендуется значения меньше "
114
+ "1000. Установите 0, чтобы отключить пересчет."
115
 
116
+ #: c:/Program Files
117
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:372
118
+ msgid "Disable Width:"
119
+ msgstr "Ширина отключения:"
120
 
121
+ #: c:/Program Files
122
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:372
123
+ msgid ""
124
+ "Use this option to disable plugin on portable devices. When the browser "
125
+ "screen width is less then specified value, the plugin is disabled!"
126
+ msgstr ""
127
+ "Используйте эту опцию для отключения плагина на мобильных устройствах. Если "
128
+ "ширина окна браузера меньше или равна указанной величине, плагин будет "
129
+ "отключен!"
130
+
131
+ #: c:/Program Files
132
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:374
133
+ msgid "Disable Height:"
134
+ msgstr "Высота отключения:"
135
+
136
+ #: c:/Program Files
137
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:374
138
+ msgid "Works the same way as Disable Width option."
139
+ msgstr "Работает аналогично опции \"Ширина отключения\""
140
+
141
+ #: c:/Program Files
142
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:380
143
  msgid "Custom HTML IDs (each one on a new line):"
144
  msgstr ""
145
+ "HTML-идентификаторы статических виджетов и прочих нестандартных элементов "
146
+ "(каждый на новой строке):"
147
 
148
+ #: c:/Program Files
149
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:386
150
  msgid "Auto fix widget id:"
151
  msgstr "Автоматически исправлять id виджетов:"
152
 
153
+ #: c:/Program Files
154
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:388
155
  msgid "Enable plugin for logged in users only:"
156
  msgstr "Только зарегистрированные пользователи:"
157
 
158
+ #: c:/Program Files
159
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:388
160
  msgid "Enable this option for debug purposes (frontend problems and etc.)"
161
  msgstr "Используйте для отладки стилей, скриптов"
162
 
163
+ #: c:/Program Files
164
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:390
165
  msgid "Inherit widget width from the parent container:"
166
+ msgstr "Наследовать ширину родительского контейнера:"
167
 
168
+ #: c:/Program Files
169
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:390
170
  msgid "Enable this option for themes with responsive sidebar"
171
+ msgstr ""
172
+ "Задействуйте эту опцию, если ширина сайдбара вашей темы меняется динамически"
173
 
174
+ #: c:/Program Files
175
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:392
176
  msgid "Use jQuery(window).load() hook:"
177
  msgstr "Вкл. jQuery(window).load():"
178
 
179
+ #: c:/Program Files
180
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:392
181
+ msgid ""
182
+ "Enable this option only if you have problems with other scroll oriented "
183
+ "javascript code"
184
  msgstr "Задействуйте эту опцию в случае проблем с другими скриптами"
185
 
186
+ #: c:/Program Files
187
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:394
188
  msgid "widget_display_callback hook priority:"
189
  msgstr "Приоритет хука widget_display_callback:"
190
 
191
+ #: c:/Program Files
192
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:400
193
  msgid "RATE THE PLUGIN"
194
  msgstr "ОЦЕНИТЬ ПЛАГИН"
195
 
196
+ #: c:/Program Files
197
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:408
198
  msgid "Support forums:"
199
  msgstr "Форумы поддержки:"
200
 
201
+ #: c:/Program Files
202
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:410
203
  msgid "English (wordpress.org)"
204
  msgstr "Английский (wordpress.org)"
205
 
206
+ #: c:/Program Files
207
+ #: (x86)/Zend/Apache2/htdocs/q2w3.ru-dev/wp-content/plugins/q2w3-fixed-widget/q2w3-fixed-widget.php:412
208
  msgid "Russian (www.q2w3.ru)"
209
  msgstr "Русский (www.q2w3.ru)"
210
 
211
+ #~ msgid "Set 0 to disable."
212
+ #~ msgstr "Установите 0, чтобы отключить пересчет параметров."
213
+
214
+ #~ msgid "Disable screen width:"
215
+ #~ msgstr "Ширина отключения:"
216
+
217
+ #~ msgid ""
218
+ #~ "HTML ID where the widget should stop floating, for example a footer. # - "
219
+ #~ "not needed"
220
+ #~ msgstr ""
221
+ #~ "Здесь необходимо указать значение атрибута id html-элемента на уровне "
222
+ #~ "которого необходимо остановить виджет. ID указывается без знака #! "
223
+
224
+ #~ msgid "Disable plugin if screen width less then:"
225
+ #~ msgstr "Отключить плагин, если размер окна меньше чем:"
226
+
227
+ #~ msgid "Use this option to disable plugin on portable devices"
228
+ #~ msgstr ""
229
+ #~ "Используйте эту опцию для отключения плагина на мобильных устройствах"
230
+
231
  #~ msgid "Screen Max Width:"
232
  #~ msgstr "Ширина окна браузера:"
233
 
234
+ #~ msgid ""
235
+ #~ "Plugin will be disabled when browser window width equals or less then "
236
+ #~ "specified value"
237
+ #~ msgstr ""
238
+ #~ "Плагин будет отключен, если ширина окна браузера меньше указанного "
239
+ #~ "значения"
240
 
241
  #~ msgid "English"
242
  #~ msgstr "Английский (wordpress.org)"
245
  #~ msgstr "Русский (www.q2w3.ru)"
246
 
247
  #~ msgid ""
248
+ #~ "Use this option only if you have problems with <a href=\"http://wordpress."
249
+ #~ "org/support/topic/doesnt-work-with-infinte-scroll-for-widget-scripts\" "
250
+ #~ "target=\"_blank\">other scroll oriented javascript code</a>"
251
  #~ msgstr ""
252
+ #~ "Используйте эту опцию только в случае проблем с <a href=\"http://"
253
+ #~ "wordpress.org/support/topic/doesnt-work-with-infinte-scroll-for-widget-"
254
+ #~ "scripts\" target=\"_blank\">другими скриптами</a>"
255
 
256
  #~ msgid "Disable plugin on phone devices:"
257
  #~ msgstr "Отключить плагин на мобильных:"
258
 
259
  #~ msgid "Option depricated. Use Screen Max Width instead!"
260
  #~ msgstr ""
261
+ #~ "Опция устарела и будет удалена в следующей версии! Вместо нее используйте "
262
+ #~ "опцию \"Ширина окна браузера\""
263
 
264
  #~ msgid "Disable plugin on tablet devices:"
265
  #~ msgstr "Отключить плагин на планшетах:"
q2w3-fixed-widget.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.q2w3.ru/q2w3-fixed-widget-wordpress-plugin/
5
  Description: Fixes positioning of the selected widgets, when the page is scrolled down.
6
  Text Domain: q2w3-fixed-widget
7
  Author: Max Bond
8
- Version: 4.1
9
  Author URI: http://www.q2w3.ru/
10
  */
11
 
@@ -17,14 +17,13 @@ class q2w3_fixed_widget { // Plugin class
17
 
18
  const ID = 'q2w3_fixed_widget';
19
 
20
- const VERSION = '4.1';
21
 
22
  protected static $sidebars_widgets;
23
 
24
  protected static $fixed_widgets;
25
 
26
  protected static $settings_page_hook;
27
-
28
 
29
 
30
  public static function init() {
@@ -36,16 +35,16 @@ class q2w3_fixed_widget { // Plugin class
36
  if ( is_admin() ) {
37
 
38
  self::load_language();
39
-
40
  add_action('in_widget_form', array( __CLASS__, 'add_widget_option' ), 10, 3);
41
 
42
  add_filter('widget_update_callback', array( __CLASS__, 'update_widget_option' ), 10, 3);
43
 
44
  add_action('admin_init', array( __CLASS__, 'register_settings' ));
45
 
46
- add_action('admin_menu', array( __CLASS__, 'admin_menu' ));
47
 
48
- add_action( 'admin_enqueue_scripts', array( __CLASS__, 'settings_page_js' ) );
49
 
50
  } else {
51
 
@@ -55,13 +54,21 @@ class q2w3_fixed_widget { // Plugin class
55
 
56
  add_action('wp_loaded', array( __CLASS__, 'custom_ids' ));
57
 
58
- add_action('wp_footer', array( __CLASS__, 'action_script' ));
59
 
60
- wp_enqueue_script(self::ID, plugin_dir_url( __FILE__ ) . 'js/q2w3-fixed-widget.min.js', array('jquery'), self::VERSION);
61
 
62
  }
63
 
64
  }
 
 
 
 
 
 
 
 
65
 
66
  public static function is_widget_fixed($instance, $widget, $args){
67
 
@@ -121,50 +128,36 @@ class q2w3_fixed_widget { // Plugin class
121
 
122
  }
123
 
124
- public static function action_script() {
125
 
126
  $options = self::load_options();
127
 
128
  if ( is_array(self::$fixed_widgets) && !empty(self::$fixed_widgets) ) {
129
 
130
- echo '<script type="text/javascript">'.PHP_EOL;
131
 
132
- if ( isset($options['window-load-enabled']) && $options['window-load-enabled'] == 'yes' ) {
133
-
134
- echo 'jQuery(window).load(function(){'.PHP_EOL;
135
-
136
- } else {
137
 
138
- echo 'jQuery(document).ready(function(){'.PHP_EOL;
139
-
140
- }
141
 
 
 
 
 
142
  $i = 0;
143
 
144
  foreach ( self::$fixed_widgets as $sidebar => $widgets ) {
145
 
146
- $i++;
147
-
148
- if ( isset($options['width-inherit']) && $options['width-inherit'] ) $width_inherit = 'true'; else $width_inherit = 'false';
149
-
150
  $widgets_array = implode(',', $widgets);
151
 
152
- echo ' var q2w3_sidebar_'. $i .'_options = { "sidebar" : "'. $sidebar .'", "margin_top" : '. $options['margin-top'] .', "margin_bottom" : '. $options['margin-bottom'] .', "stop_id" : "' . $options['stop-id'] .'", "screen_max_width" : '. $options['screen-max-width'] .', "width_inherit" : '. $width_inherit .', "widgets" : ['. $widgets_array .'] };'.PHP_EOL;
153
 
154
- echo ' q2w3_sidebar(q2w3_sidebar_'. $i .'_options);'.PHP_EOL;
155
-
156
- if ( $options['refresh-interval'] > 0 ) {
157
-
158
- echo ' setInterval(function () { q2w3_sidebar(q2w3_sidebar_'. $i .'_options); }, '. $options['refresh-interval'] .');'.PHP_EOL;
159
-
160
- }
161
 
162
  }
163
-
164
- echo '});'.PHP_EOL;
165
 
166
  echo '</script>'.PHP_EOL;
167
-
168
  }
169
 
170
  }
@@ -203,23 +196,15 @@ class q2w3_fixed_widget { // Plugin class
203
 
204
  $languages_path = plugin_basename( dirname(__FILE__).'/lang' );
205
 
206
- load_plugin_textdomain( 'q2w3-fixed-widget', FALSE, $languages_path );
207
-
208
- /*$currentLocale = get_locale();
209
-
210
- if (!empty($currentLocale)) {
211
-
212
- $moFile = dirname(__FILE__).'/lang/'.$currentLocale.".mo";
213
-
214
- if (@file_exists($moFile) && is_readable($moFile)) load_textdomain('q2w3-fixed-widget', $moFile);
215
-
216
- }*/
217
 
218
  }
219
 
220
  public static function admin_menu() {
221
 
222
- self::$settings_page_hook = add_submenu_page( 'themes.php', __('Fixed Widget Options', 'q2w3-fixed-widget'), __('Fixed Widget Options', 'q2w3-fixed-widget'), 'activate_plugins', 'q2w3_fixed_widget', array( __CLASS__, 'settings_page' ) );
 
 
223
 
224
  }
225
 
@@ -229,10 +214,14 @@ class q2w3_fixed_widget { // Plugin class
229
 
230
  $d['margin-bottom'] = 0;
231
 
 
 
232
  $d['refresh-interval'] = 1500;
233
 
234
  $d['screen-max-width'] = 0;
235
 
 
 
236
  $d['fix-widget-id'] = 'yes';
237
 
238
  $d['window-load-enabled'] = false;
@@ -243,17 +232,17 @@ class q2w3_fixed_widget { // Plugin class
243
 
244
  $d['widget_display_callback_priority'] = 30;
245
 
246
- $d['stop-id'] = '';
247
-
248
  return $d;
249
 
250
  }
251
 
252
  protected static function load_options() {
253
 
254
- $options = get_option(self::ID);
 
 
255
 
256
- return array_merge(self::defaults(), (array)$options);
257
 
258
  }
259
 
@@ -273,6 +262,8 @@ class q2w3_fixed_widget { // Plugin class
273
 
274
  $input['screen-max-width'] = (int)$input['screen-max-width'];
275
 
 
 
276
  $input['custom-ids'] = trim(wp_strip_all_tags($input['custom-ids']));
277
 
278
  $input['stop-id'] = trim(wp_strip_all_tags($input['stop-id']));
@@ -308,9 +299,9 @@ class q2w3_fixed_widget { // Plugin class
308
  add_meta_box(self::ID.'-custom-ids', __('Custom IDs', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_custom_ids_box' ), $screen, 'normal');
309
 
310
  add_meta_box(self::ID.'-help', __('Help for users', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_help_box' ), $screen, 'side');
311
-
312
  add_meta_box(self::ID.'-donate', __('Help for developer', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_donate_box' ), $screen, 'side');
313
-
314
  $options = self::load_options();
315
 
316
  echo '<div class="wrap"><div id="icon-themes" class="icon32"><br /></div><h2>'. __('Fixed Widget Options', 'q2w3-fixed-widget') .'</h2>'.PHP_EOL;
@@ -361,12 +352,14 @@ class q2w3_fixed_widget { // Plugin class
361
 
362
  echo '<p><span style="display: inline-block; width: 150px;">'. __('Margin Bottom:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[margin-bottom]" value="'. $options['margin-bottom'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('px', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
363
 
364
- echo '<p><span style="display: inline-block; width: 150px;">'. __('Stop ID:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[stop-id]" value="'. $options['stop-id'] .'" style="width: 150px;">&nbsp;'. __('HTML ID where the widget should stop floating, for example a footer. # - not needed', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
365
 
366
- echo '<p><span style="display: inline-block; width: 150px;">'. __('Refresh interval:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[refresh-interval]" value="'. $options['refresh-interval'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('milliseconds', 'q2w3-fixed-widget') .' / '. __('Set 0 to disable.', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
 
 
 
 
367
 
368
- echo '<p><span style="display: inline-block; width: 150px;">'. __('Disable plugin if screen width less then:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[screen-max-width]" value="'. $options['screen-max-width'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('px', 'q2w3-fixed-widget') .' / '. __('Use this option to disable plugin on portable devices', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
369
-
370
  }
371
 
372
  public static function settings_page_custom_ids_box($options) {
@@ -389,14 +382,6 @@ class q2w3_fixed_widget { // Plugin class
389
 
390
  }
391
 
392
- public static function settings_page_donate_box($options) {
393
-
394
- echo '<p style="text-align: center"><a href="http://wordpress.org/support/view/plugin-reviews/q2w3-fixed-widget/" target="_blank">'. __('RATE THE PLUGIN', 'q2w3-fixed-widget') .'</a></p>';
395
-
396
- echo '<p style="text-align: center"><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Q36H2MHNVVP7U" target="_blank"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" alt="PayPal - The safer, easier way to pay online!" /></a></p>'.PHP_EOL;
397
-
398
- }
399
-
400
  public static function settings_page_help_box($options) {
401
 
402
  echo '<p>'. __('Support forums:', 'q2w3-fixed-widget') .'</p>';
@@ -407,6 +392,14 @@ class q2w3_fixed_widget { // Plugin class
407
 
408
  }
409
 
 
 
 
 
 
 
 
 
410
  public static function registered_sidebars_filter() {
411
 
412
  global $wp_registered_sidebars;
@@ -473,4 +466,4 @@ class q2w3_fixed_widget { // Plugin class
473
 
474
  } // registered_sidebars_filter()
475
 
476
- } // q2w3_fixed_widget class
5
  Description: Fixes positioning of the selected widgets, when the page is scrolled down.
6
  Text Domain: q2w3-fixed-widget
7
  Author: Max Bond
8
+ Version: 5.0
9
  Author URI: http://www.q2w3.ru/
10
  */
11
 
17
 
18
  const ID = 'q2w3_fixed_widget';
19
 
20
+ const VERSION = '5.0';
21
 
22
  protected static $sidebars_widgets;
23
 
24
  protected static $fixed_widgets;
25
 
26
  protected static $settings_page_hook;
 
27
 
28
 
29
  public static function init() {
35
  if ( is_admin() ) {
36
 
37
  self::load_language();
38
+
39
  add_action('in_widget_form', array( __CLASS__, 'add_widget_option' ), 10, 3);
40
 
41
  add_filter('widget_update_callback', array( __CLASS__, 'update_widget_option' ), 10, 3);
42
 
43
  add_action('admin_init', array( __CLASS__, 'register_settings' ));
44
 
45
+ add_action('admin_menu', array( __CLASS__, 'admin_menu' ), 5);
46
 
47
+ add_action('admin_enqueue_scripts', array( __CLASS__, 'settings_page_js' ));
48
 
49
  } else {
50
 
54
 
55
  add_action('wp_loaded', array( __CLASS__, 'custom_ids' ));
56
 
57
+ add_action('wp_footer', array( __CLASS__, 'js_settings' ), 1);
58
 
59
+ add_action('wp_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ));
60
 
61
  }
62
 
63
  }
64
+
65
+ public static function enqueue_scripts() {
66
+
67
+ wp_enqueue_script('jquery');
68
+
69
+ wp_enqueue_script(self::ID, plugin_dir_url( __FILE__ ) . 'js/q2w3-fixed-widget.min.js', array('jquery'), self::VERSION, true);
70
+
71
+ }
72
 
73
  public static function is_widget_fixed($instance, $widget, $args){
74
 
128
 
129
  }
130
 
131
+ public static function js_settings() {
132
 
133
  $options = self::load_options();
134
 
135
  if ( is_array(self::$fixed_widgets) && !empty(self::$fixed_widgets) ) {
136
 
137
+ echo '<script type="text/javascript">';
138
 
139
+ echo 'var q2w3_sidebar_options = new Array(); ';
 
 
 
 
140
 
141
+ if ( isset($options['window-load-enabled']) && $options['window-load-enabled'] == 'yes' ) $window_load_hook = 'true'; else $window_load_hook = 'false';
 
 
142
 
143
+ if ( isset($options['width-inherit']) && $options['width-inherit'] ) $width_inherit = 'true'; else $width_inherit = 'false';
144
+
145
+ if ( $options['refresh-interval'] > 0 ) $refresh_interval = $options['refresh-interval']; else $refresh_interval = 0;
146
+
147
  $i = 0;
148
 
149
  foreach ( self::$fixed_widgets as $sidebar => $widgets ) {
150
 
 
 
 
 
151
  $widgets_array = implode(',', $widgets);
152
 
153
+ echo 'q2w3_sidebar_options['. $i .'] = { "sidebar" : "'. $sidebar .'", "margin_top" : '. $options['margin-top'] .', "margin_bottom" : '. $options['margin-bottom'] .', "stop_id" : "' . $options['stop-id'] .'", "screen_max_width" : '. $options['screen-max-width'] .', "screen_max_height" : '. $options['screen-max-height'] .', "width_inherit" : '. $width_inherit .', "refresh_interval" : '. $refresh_interval .', "window_load_hook" : '. $window_load_hook .', "widgets" : ['. $widgets_array .'] };'.PHP_EOL;
154
 
155
+ $i++;
 
 
 
 
 
 
156
 
157
  }
 
 
158
 
159
  echo '</script>'.PHP_EOL;
160
+
161
  }
162
 
163
  }
196
 
197
  $languages_path = plugin_basename( dirname(__FILE__).'/lang' );
198
 
199
+ load_plugin_textdomain( 'q2w3-fixed-widget', false, $languages_path );
 
 
 
 
 
 
 
 
 
 
200
 
201
  }
202
 
203
  public static function admin_menu() {
204
 
205
+ remove_action('admin_menu', array( 'q2w3_fixed_widget', 'admin_menu' )); // Remove free version plugin
206
+
207
+ self::$settings_page_hook = add_submenu_page( 'themes.php', __('Fixed Widget Options', 'q2w3-fixed-widget'), __('Fixed Widget Options', 'q2w3-fixed-widget'), 'activate_plugins', self::ID, array( __CLASS__, 'settings_page' ) );
208
 
209
  }
210
 
214
 
215
  $d['margin-bottom'] = 0;
216
 
217
+ $d['stop-id'] = '';
218
+
219
  $d['refresh-interval'] = 1500;
220
 
221
  $d['screen-max-width'] = 0;
222
 
223
+ $d['screen-max-height'] = 0;
224
+
225
  $d['fix-widget-id'] = 'yes';
226
 
227
  $d['window-load-enabled'] = false;
232
 
233
  $d['widget_display_callback_priority'] = 30;
234
 
 
 
235
  return $d;
236
 
237
  }
238
 
239
  protected static function load_options() {
240
 
241
+ $options = get_option(self::ID);
242
+
243
+ $options_old = get_option('q2w3_fixed_widget');
244
 
245
+ return array_merge(self::defaults(), (array)$options_old, (array)$options);
246
 
247
  }
248
 
262
 
263
  $input['screen-max-width'] = (int)$input['screen-max-width'];
264
 
265
+ $input['screen-max-height'] = (int)$input['screen-max-height'];
266
+
267
  $input['custom-ids'] = trim(wp_strip_all_tags($input['custom-ids']));
268
 
269
  $input['stop-id'] = trim(wp_strip_all_tags($input['stop-id']));
299
  add_meta_box(self::ID.'-custom-ids', __('Custom IDs', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_custom_ids_box' ), $screen, 'normal');
300
 
301
  add_meta_box(self::ID.'-help', __('Help for users', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_help_box' ), $screen, 'side');
302
+
303
  add_meta_box(self::ID.'-donate', __('Help for developer', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_donate_box' ), $screen, 'side');
304
+
305
  $options = self::load_options();
306
 
307
  echo '<div class="wrap"><div id="icon-themes" class="icon32"><br /></div><h2>'. __('Fixed Widget Options', 'q2w3-fixed-widget') .'</h2>'.PHP_EOL;
352
 
353
  echo '<p><span style="display: inline-block; width: 150px;">'. __('Margin Bottom:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[margin-bottom]" value="'. $options['margin-bottom'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('px', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
354
 
355
+ echo '<p><span style="display: inline-block; width: 150px;">'. __('Stop ID:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[stop-id]" value="'. $options['stop-id'] .'" style="width: 150px;">&nbsp;'. __('Here you need to provide html tag id. The position of that html element will determine margin bottom value.', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
356
 
357
+ echo '<p><span style="display: inline-block; width: 150px;">'. __('Refresh interval:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[refresh-interval]" value="'. $options['refresh-interval'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('milliseconds', 'q2w3-fixed-widget') .' / '. __('Used only for compatibility with browsers without MutationObserver API support! Set 0 to completely disable.', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
358
+
359
+ echo '<p><span style="display: inline-block; width: 150px;">'. __('Disable Width:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[screen-max-width]" value="'. $options['screen-max-width'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('px', 'q2w3-fixed-widget') .' / '. __('Use this option to disable plugin on portable devices. When the browser screen width is less then specified value, the plugin is disabled!', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
360
+
361
+ echo '<p><span style="display: inline-block; width: 150px;">'. __('Disable Height:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[screen-max-height]" value="'. $options['screen-max-height'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('px', 'q2w3-fixed-widget') .' / '. __('Works the same way as Disable Width option.', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
362
 
 
 
363
  }
364
 
365
  public static function settings_page_custom_ids_box($options) {
382
 
383
  }
384
 
 
 
 
 
 
 
 
 
385
  public static function settings_page_help_box($options) {
386
 
387
  echo '<p>'. __('Support forums:', 'q2w3-fixed-widget') .'</p>';
392
 
393
  }
394
 
395
+ public static function settings_page_donate_box($options) {
396
+
397
+ echo '<p style="text-align: center"><a href="http://wordpress.org/support/view/plugin-reviews/q2w3-fixed-widget/" target="_blank">'. __('RATE THE PLUGIN', 'q2w3-fixed-widget') .'</a></p>';
398
+
399
+ echo '<p style="text-align: center"><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Q36H2MHNVVP7U" target="_blank"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" alt="PayPal - The safer, easier way to pay online!" /></a></p>'.PHP_EOL;
400
+
401
+ }
402
+
403
  public static function registered_sidebars_filter() {
404
 
405
  global $wp_registered_sidebars;
466
 
467
  } // registered_sidebars_filter()
468
 
469
+ } // q2w3_fixed_widget_pro class
readme.txt CHANGED
@@ -1,25 +1,30 @@
1
- === Q2W3 Fixed Widget (Sticky Widget) ===
2
  Contributors: Max Bond
3
- Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Q36H2MHNVVP7U
4
- Tags: sidebar, widget, scroll, scrolling, fixed, floating, sticky, russian, q2w3
5
  Requires at least: 4.0
6
- Tested up to: 4.5.3
7
- Stable tag: 4.1
8
 
9
  Fixes positioning of the selected widgets, when the page is scrolled down.
10
 
11
  == Description ==
12
 
13
- Enable "Fixed widget" option in the widget settings (see [screenshot](http://wordpress.org/extend/plugins/q2w3-fixed-widget/screenshots/))
14
- and it will be always in sight when page is scrolled down or up. There is no problem to "Fix" or "Stick" more than one widget even located in different sidebars!
15
 
16
- [youtube http://www.youtube.com/watch?v=sHXmeH5TfnA]
17
 
18
- Compatibility note. The plugin is not working with all themes. Theme requirements:
 
 
 
 
 
 
19
 
20
  * jQuery 1.7 required. jQuery 1.8.3 (or later) is recommended.
21
  * No JavaScript errors, coused by other plugins and scripts.
22
  * `wp_head()` and `wp_footer()` functions in header.php and footer.php files.
 
23
 
24
  In some cases (widget "jumping" during scroll and etc.) theme CSS changes may be required.
25
 
@@ -35,8 +40,9 @@ Supported languages:
35
 
36
  1. Follow standard WordPress plugin installation procedure
37
  2. Activate the plugin through the Plugins menu in WordPress
38
- 3. Go to Appearance -> Widgets, enable "Fixed Widget" option on any active widget ([screenshot](http://wordpress.org/extend/plugins/q2w3-fixed-widget/screenshots/))
39
- 4. Fine tune fixed widget margins on Appearance -> Fixed Widget Options page
 
40
 
41
  == Frequently Asked Questions ==
42
 
@@ -56,39 +62,30 @@ Check your CSS files for these two instructions:
56
  -webkit-transform: translate3d(0,0,0);`
57
  If found, disable them and see the result.
58
 
59
- = I have a responsive theme. How can I make the plugin compatible with it? =
60
-
61
- There are several options to accomplish this task.
62
- First, is to enable "Screen Max Width" option.
63
- For example you have a responsive styles: `@media screen and (max-width: 940px) {...}`. Set "Screen Max Width" = 940 - to disable plugin in responsive mode.
64
- Second, use "Inherit widget width from the parent container" option.
65
-
66
  = How to prevent overlapping with the footer? =
67
 
68
- Make sure you have updated plugin to version 2.x. Go to WP admin area, Appearance -> Fixed Widget Options. Here you can define top and bottom margins. Set bottom margin value >= footer height. Check the result.
69
-
70
- = Refresh Interval option =
71
-
72
- This option defines (in milliseconds, 1 sec = 1000 ms) how often plugin recalculates sticky widgets parameters. Required by sites with dynamic content (infinite scroll, image lazy load and other javascript stuff). The option have impact on the site performance (client side). Recommended values: 250 - 1500 milliseconds. If you don't have dynamic content, set Refresh interval = 0.
73
 
74
- = I am ready to pay for advanced help. How to contact you? =
 
75
 
76
- Send me email from this page: [http://www.q2w3.ru/contacts/](http://www.q2w3.ru/contacts/)
77
-
78
- == Screenshots ==
79
-
80
- 1. Widget with enabled "Fixed widget" option
81
- 2. Fixed Widget Options
82
- 3. Margin top
83
- 4. Margin bottom
84
 
85
  == Other Notes ==
86
 
 
 
87
  * [Code Insert Manager](http://wordpress.org/extend/plugins/q2w3-inc-manager/)
88
- * [Q2W3 Post Order](http://wordpress.org/extend/plugins/q2w3-post-order/)
89
 
90
  == Changelog ==
91
 
 
 
 
 
 
 
92
  = 4.1 =
93
  * Added `Stop ID` option. Use it when you cannot specify `Margin Bottom` value. Solution provided by [Julian_Kingman](https://wordpress.org/support/profile/julian_kingman)!
94
  * Now the plugin is aware of the Wordpress admin bar presence!
1
+ === Q2W3 Fixed Widget Pro ===
2
  Contributors: Max Bond
3
+ Tags: sidebar, widget, scroll, scrolling, fixed, fixed widget, floating, floating widget, sticky, sticky widget, russian, q2w3
 
4
  Requires at least: 4.0
5
+ Tested up to: 4.6
6
+ Stable tag: 5.0
7
 
8
  Fixes positioning of the selected widgets, when the page is scrolled down.
9
 
10
  == Description ==
11
 
12
+ Enable "Fixed widget" option in the widget settings and it will be always in sight when page is scrolled down or up. There is no problem to "fix" or "stick" more than one widget even located in different sidebars!
 
13
 
14
+ [Live demo!](http://q2w3.ru/fixed-widget-demo/)
15
 
16
+ New in version 5.0:
17
+ 1. Optimized client side performance. Detection of page changes is now based on MutationObserver API. Widget parameters recount is fired only when needed! Refresh interval option used only for campatibility with old browsers (no MutationObserver API support).
18
+ 2. Improved compatibility with caching plugins (W3TC, Autoptimize and etc.). No need to exclude jQuery and plugin files from cache!
19
+ 3. Async/Defer script load method support
20
+ 4. Added `Disable Width` option
21
+
22
+ Compatibility note. The plugin is not working with all themes! Theme requirements:
23
 
24
  * jQuery 1.7 required. jQuery 1.8.3 (or later) is recommended.
25
  * No JavaScript errors, coused by other plugins and scripts.
26
  * `wp_head()` and `wp_footer()` functions in header.php and footer.php files.
27
+ * Widgets must have an id attribute.
28
 
29
  In some cases (widget "jumping" during scroll and etc.) theme CSS changes may be required.
30
 
40
 
41
  1. Follow standard WordPress plugin installation procedure
42
  2. Activate the plugin through the Plugins menu in WordPress
43
+ 3. Go to Appearance -> Widgets, enable "Fixed Widget" option on any active widget
44
+ 4. Fine tune plugin parameters on Appearance -> Fixed Widget Options page
45
+
46
 
47
  == Frequently Asked Questions ==
48
 
62
  -webkit-transform: translate3d(0,0,0);`
63
  If found, disable them and see the result.
64
 
 
 
 
 
 
 
 
65
  = How to prevent overlapping with the footer? =
66
 
67
+ Go to WP admin area, Appearance -> Fixed Widget Options. Here you can define top and bottom margins. Set bottom margin value >= footer height. Check the result.
68
+ If your footer height is changing from page to page it is better to use `Stop ID` option. Here you need to provide html tag id. The position of that html element will determine margin bottom value. For example let's take Twenty Sixteen default theme. Theme's footer container has an id="colophon". In the `Stop ID` option I need to enter just colophon, without any other symbols!
 
 
 
69
 
70
+ = How to disable the plugin on mobile devices? =
71
+ There are two options: `Disable Width` and `Disable Height`. They works the same way. If browser window width/height is less then or equals specified value - the plugin is disabled.
72
 
 
 
 
 
 
 
 
 
73
 
74
  == Other Notes ==
75
 
76
+ Other Q2W3 plugins:
77
+
78
  * [Code Insert Manager](http://wordpress.org/extend/plugins/q2w3-inc-manager/)
79
+
80
 
81
  == Changelog ==
82
 
83
+ = 5.0 =
84
+ * Optimized client side performance. Detection of page changes is now based on MutationObserver API. Widget parameters recount is fired only when needed! Refresh interval option used only for campatibility with old browsers (no MutationObserver API support).
85
+ * Improved compatibility with caching plugins (W3TC, Autoptimize and etc.). No need to exclude jQuery and plugin files from cache!
86
+ * Async/Defer script load method support
87
+ * Added `Disable Width` option
88
+
89
  = 4.1 =
90
  * Added `Stop ID` option. Use it when you cannot specify `Margin Bottom` value. Solution provided by [Julian_Kingman](https://wordpress.org/support/profile/julian_kingman)!
91
  * Now the plugin is aware of the Wordpress admin bar presence!
screenshot-1.jpg DELETED
Binary file
screenshot-2.jpg DELETED
Binary file
screenshot-3.jpg DELETED
Binary file
screenshot-4.jpg DELETED
Binary file