Q2W3 Fixed Widget - Version 4.1

Version Description

  • Added Stop ID option. Use it when you cannot specify Margin Bottom value. Solution provided by Julian_Kingman!
  • Now the plugin is aware of the Wordpress admin bar presence!
  • Fixed destruction of jQuery(window).load hook. There should be no problems with other jQuery plugins now!
  • Added German translation
  • Updated internationalization support
Download this release

Release Info

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

Code changes from version 4.0.6 to 4.1

js/q2w3-fixed-widget.js CHANGED
@@ -12,7 +12,11 @@ function q2w3_sidebar(options) {
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
  jQuery('.q2w3-widget-clone-' + options.sidebar).remove(); // clear fixed mode p1
18
 
@@ -56,7 +60,7 @@ function q2w3_sidebar(options) {
56
  }
57
  }
58
 
59
- jQuery(window).off('load scroll.' + options.sidebar);
60
 
61
  for ( var i = 0; i < widgets.length; i++ ) {
62
  if (widgets[i]) fixed_widget(widgets[i]);
@@ -67,6 +71,10 @@ function q2w3_sidebar(options) {
67
  var trigger_top = widget.offset_top - widget.fixed_margin_top;
68
  var trigger_bottom = document_height - options.margin_bottom;
69
 
 
 
 
 
70
  var widget_width; if ( options.width_inherit ) widget_width = 'inherit'; else widget_width = widget.obj.css('width');
71
 
72
  var style_applied_top = false;
@@ -111,8 +119,8 @@ function q2w3_sidebar(options) {
111
  }).trigger('scroll.' + options.sidebar);
112
 
113
  jQuery(window).on('resize', function() {
114
- if ( jQuery(window).width() <= options.screen_max_width ) {
115
- jQuery(window).off('load scroll.' + options.sidebar);
116
  widget.obj.css('position', '');
117
  widget.obj.css('top', '');
118
  widget.obj.css('width', '');
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
 
21
  jQuery('.q2w3-widget-clone-' + options.sidebar).remove(); // clear fixed mode p1
22
 
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
  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;
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', '');
js/q2w3-fixed-widget.min.js CHANGED
@@ -1 +1 @@
1
- function q2w3_sidebar(e){function t(){}function f(t){var n=t.offset_top-t.fixed_margin_top;var s=i-e.margin_bottom;var o;if(e.width_inherit)o="inherit";else o=t.obj.css("width");var u=false;var a=false;var f=false;jQuery(window).on("scroll."+e.sidebar,function(e){var i=jQuery(this).scrollTop();if(i+t.fixed_margin_bottom>=s){if(!a){t.obj.css("position","fixed");t.obj.css("top","");t.obj.css("width",o);if(jQuery("#"+t.clone_id).length<=0)t.obj.before(t.clone);a=true;u=false;f=false}t.obj.css("bottom",i+r+t.next_widgets_height-s)}else if(i>=n){if(!u){t.obj.css("position","fixed");t.obj.css("top",t.fixed_margin_top);t.obj.css("bottom","");t.obj.css("width",o);if(jQuery("#"+t.clone_id).length<=0)t.obj.before(t.clone);u=true;a=false;f=false}}else{if(!f){t.obj.css("position","");t.obj.css("top","");t.obj.css("width","");if(jQuery("#"+t.clone_id).length>0)jQuery("#"+t.clone_id).remove();f=true;u=false;a=false}}}).trigger("scroll."+e.sidebar);jQuery(window).on("resize",function(){if(jQuery(window).width()<=e.screen_max_width){jQuery(window).off("load scroll."+e.sidebar);t.obj.css("position","");t.obj.css("top","");t.obj.css("width","");t.obj.css("margin","");t.obj.css("padding","");if(jQuery("#"+t.clone_id).length>0)jQuery("#"+t.clone_id).remove();f=true;u=false;a=false}}).trigger("resize")}if(!e.widgets)return false;if(e.widgets.length<1)return false;if(!e.sidebar)e.sidebar="q2w3-default-sidebar";var n=new Array;var r=jQuery(window).height();var i=jQuery(document).height();var s=e.margin_top;jQuery(".q2w3-widget-clone-"+e.sidebar).remove();for(var o=0;o<e.widgets.length;o++){widget_obj=jQuery("#"+e.widgets[o]);widget_obj.css("position","");if(widget_obj.attr("id")){n[o]=new t;n[o].obj=widget_obj;n[o].clone=widget_obj.clone();n[o].clone.children().remove();n[o].clone_id=widget_obj.attr("id")+"_clone";n[o].clone.addClass("q2w3-widget-clone-"+e.sidebar);n[o].clone.attr("id",n[o].clone_id);n[o].clone.css("height",widget_obj.height());n[o].clone.css("visibility","hidden");n[o].offset_top=widget_obj.offset().top;n[o].fixed_margin_top=s;n[o].height=widget_obj.outerHeight(true);n[o].fixed_margin_bottom=s+n[o].height;s+=n[o].height}else{n[o]=false}}var u=0;var a;for(var o=n.length-1;o>=0;o--){if(n[o]){n[o].next_widgets_height=u;n[o].fixed_margin_bottom+=u;u+=n[o].height;if(!a){a=widget_obj.parent();a.css("height","");a.height(a.height())}}}jQuery(window).off("load scroll."+e.sidebar);for(var o=0;o<n.length;o++){if(n[o])f(n[o])}}
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])}
lang/q2w3-fixed-widget-de_DE.mo ADDED
Binary file
lang/q2w3-fixed-widget-de_DE.po ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Q2W3 Fixed Widget\n"
4
+ "POT-Creation-Date: 2013-05-30 21:15+0400\n"
5
+ "PO-Revision-Date: 2014-04-22 16:09+0100\n"
6
+ "Last-Translator: Stefan Meier <post@smeier.biz>\n"
7
+ "Language-Team: Fetten, Meier. <hola@fetten-meier.com>\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.5.5\n"
12
+ "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: de_DE\n"
15
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
+ "X-Poedit-SearchPath-0: c:\\Program Files (x86)\\Zend\\Apache2\\htdocs\\q2w3."
17
+ "ru-dev\\wp-content\\plugins\\q2w3-fixed-widget\n"
18
+
19
+ #: c:\Program Files
20
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:187
21
+ msgid "Fixed widget"
22
+ msgstr "Fixed Widget"
23
+
24
+ #: c:\Program Files
25
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:227
26
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:279
27
+ msgid "Fixed Widget Options"
28
+ msgstr "Fixed Widget Optionen"
29
+
30
+ #: c:\Program Files
31
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:283
32
+ msgid "Settings saved."
33
+ msgstr "Änderungen gespeichert."
34
+
35
+ #: c:\Program Files
36
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:291
37
+ msgid "Margin Top:"
38
+ msgstr "Oberer Abstand:"
39
+
40
+ #: c:\Program Files
41
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:291
42
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:293
43
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:297
44
+ msgid "px"
45
+ msgstr "px"
46
+
47
+ #: c:\Program Files
48
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:293
49
+ msgid "Margin Bottom:"
50
+ msgstr "Unterer Abstand:"
51
+
52
+ #: c:\Program Files
53
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:295
54
+ msgid "Refresh interval:"
55
+ msgstr "Aktualisierungs-Intervall:"
56
+
57
+ #: c:\Program Files
58
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:295
59
+ msgid "milliseconds"
60
+ msgstr "Millisekunden"
61
+
62
+ #: c:\Program Files
63
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:295
64
+ msgid "Set 0 to disable."
65
+ msgstr "0 zum deaktivieren"
66
+
67
+ #: c:\Program Files
68
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:297
69
+ msgid "Screen Max Width:"
70
+ msgstr "Maximale Bildschirmbreite:"
71
+
72
+ #: c:\Program Files
73
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:297
74
+ msgid ""
75
+ "Plugin will be disabled when browser window width equals or less then "
76
+ "specified value"
77
+ msgstr ""
78
+ "Das Plugin wird deaktivert, falls die Fenstergröße des Browsers dem "
79
+ "festgelegten Wert entspricht oder darunter liegt."
80
+
81
+ #: c:\Program Files
82
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:299
83
+ msgid "Custom HTML IDs (each one on a new line):"
84
+ msgstr "Eigene HTML IDs (eine pro Zeile)"
85
+
86
+ #: c:\Program Files
87
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:301
88
+ msgid "Use jQuery(window).load() hook:"
89
+ msgstr "Benutze jQuery(window).load():"
90
+
91
+ #: c:\Program Files
92
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:301
93
+ msgid ""
94
+ "Use this option only if you have problems with <a href=\"http://wordpress."
95
+ "org/support/topic/doesnt-work-with-infinte-scroll-for-widget-scripts\" "
96
+ "target=\"_blank\">other scroll oriented javascript code</a>"
97
+ msgstr ""
98
+ "Diese Option nur benutzen, falls es zu Problemen mit <a href=\"http://"
99
+ "wordpress.org/support/topic/doesnt-work-with-infinte-scroll-for-widget-"
100
+ "scripts\" target=\"_blank\">anderem scroll-orientierten JavaScript-Code</a> "
101
+ "kommt."
102
+
103
+ #: c:\Program Files
104
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:303
105
+ msgid "Disable plugin on phone devices:"
106
+ msgstr "Plugin auf Smartphones deaktivieren:"
107
+
108
+ #: c:\Program Files
109
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:303
110
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:305
111
+ msgid "Option depricated. Use Screen Max Width instead!"
112
+ msgstr "Option veraltet. Benutze stattdessen Maximale Bildschirmbreite."
113
+
114
+ #: c:\Program Files
115
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:305
116
+ msgid "Disable plugin on tablet devices:"
117
+ msgstr "Plugin auf Tablets deaktivieren:"
118
+
119
+ #: c:\Program Files
120
+ #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:307
121
+ msgid "Save Changes"
122
+ msgstr "Änderungen speichern"
123
+
124
+ #~ msgid "Fixed Widget Options."
125
+ #~ msgstr "Настройки Фиксированных Виджетов"
lang/{es_ES.mo → q2w3-fixed-widget-es_ES.mo} RENAMED
File without changes
lang/{es_ES.po → q2w3-fixed-widget-es_ES.po} RENAMED
File without changes
lang/{fr_FR.mo → q2w3-fixed-widget-fr_FR.mo} RENAMED
File without changes
lang/{fr_FR.po → q2w3-fixed-widget-fr_FR.po} RENAMED
File without changes
lang/q2w3-fixed-widget-ru_RU.mo ADDED
Binary file
lang/{ru_RU.po → q2w3-fixed-widget-ru_RU.po} RENAMED
@@ -1,180 +1,192 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Q2W3 Fixed Widget\n"
4
- "POT-Creation-Date: 2013-10-04 19:56+0400\n"
5
- "PO-Revision-Date: 2013-10-04 20:04+0400\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
 
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "X-Generator: Poedit 1.5.7\n"
12
  "X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
13
  "X-Poedit-Basepath: .\n"
14
- "X-Poedit-SearchPath-0: c:\\Program Files (x86)\\Zend\\Apache2\\htdocs\\q2w3."
15
- "ru-dev\\wp-content\\plugins\\q2w3-fixed-widget\n"
16
 
17
  #: c:\Program Files
18
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:175
19
  msgid "Fixed widget"
20
  msgstr "Зафиксировать виджет"
21
 
22
  #: c:\Program Files
23
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:213
24
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:303
25
  msgid "Fixed Widget Options"
26
  msgstr "Фикс. Виджеты"
27
 
28
  #: c:\Program Files
29
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:291
30
  msgid "General Options"
31
  msgstr "Основные настройки"
32
 
33
  #: c:\Program Files
34
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:293
35
  msgid "Compatibility"
36
  msgstr "Совместимость"
37
 
38
  #: c:\Program Files
39
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:295
40
  msgid "Custom IDs"
41
  msgstr "Произвольные идентификаторы"
42
 
43
  #: c:\Program Files
44
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:297
45
  msgid "Help for users"
46
  msgstr "Помощь пользователям"
47
 
48
  #: c:\Program Files
49
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:299
50
  msgid "Help for developer"
51
  msgstr "Помощь разработчику"
52
 
53
  #: c:\Program Files
54
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:307
55
  msgid "Settings saved."
56
- msgstr ""
57
 
58
  #: c:\Program Files
59
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:333
60
  msgid "Save Changes"
61
- msgstr ""
62
 
63
  #: c:\Program Files
64
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:347
65
  msgid "Margin Top:"
66
  msgstr "Верхний отступ:"
67
 
68
  #: c:\Program Files
69
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:347
70
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:349
71
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:353
72
  msgid "px"
73
  msgstr "пикс."
74
 
75
  #: c:\Program Files
76
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:349
77
  msgid "Margin Bottom:"
78
  msgstr "Нижний отступ:"
79
 
80
  #: c:\Program Files
81
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:351
 
 
 
 
 
 
 
 
 
 
 
 
82
  msgid "Refresh interval:"
83
  msgstr "Интервал обновления:"
84
 
85
  #: c:\Program Files
86
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:351
87
  msgid "milliseconds"
88
  msgstr "миллисекунды"
89
 
90
  #: c:\Program Files
91
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:351
92
  msgid "Set 0 to disable."
93
  msgstr "Установите 0, чтобы отключить пересчет параметров"
94
 
95
  #: c:\Program Files
96
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:353
97
- msgid "Screen Max Width:"
98
- msgstr "Ширина окна браузера:"
99
 
100
  #: c:\Program Files
101
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:353
102
- msgid ""
103
- "Plugin will be disabled when browser window width equals or less then "
104
- "specified value"
105
- msgstr ""
106
- "Плагин будет отключен, если ширина окна браузера меньше указанного значения"
107
 
108
  #: c:\Program Files
109
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:359
110
  msgid "Custom HTML IDs (each one on a new line):"
111
  msgstr ""
112
- "HTML-идентификаторы статических виджетов и прочих нестандартных элементов "
113
- "(каждый на новой строке):"
114
 
115
  #: c:\Program Files
116
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:365
 
 
 
 
 
117
  msgid "Enable plugin for logged in users only:"
118
  msgstr "Только зарегистрированные пользователи:"
119
 
120
  #: c:\Program Files
121
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:365
122
  msgid "Enable this option for debug purposes (frontend problems and etc.)"
123
  msgstr "Используйте для отладки стилей, скриптов"
124
 
125
  #: c:\Program Files
126
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:367
127
- msgid "Auto fix widget id:"
128
- msgstr "Автоматически исправлять id виджетов:"
129
-
130
- #: c:\Program Files
131
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:369
132
  msgid "Inherit widget width from the parent container:"
133
  msgstr "Наследовать ширину фиксированного виджета:"
134
 
135
  #: c:\Program Files
136
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:369
137
  msgid "Enable this option for themes with responsive sidebar"
138
- msgstr ""
139
- "Задействуйте эту опцию, если ширина сайдбара вашей темы меняется динамически"
140
 
141
  #: c:\Program Files
142
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:371
143
  msgid "Use jQuery(window).load() hook:"
144
  msgstr "Вкл. jQuery(window).load():"
145
 
146
  #: c:\Program Files
147
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:371
148
- msgid ""
149
- "Enable this option only if you have problems with other scroll oriented "
150
- "javascript code"
151
  msgstr "Задействуйте эту опцию в случае проблем с другими скриптами"
152
 
153
  #: c:\Program Files
154
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:373
155
  msgid "widget_display_callback hook priority:"
156
  msgstr "Приоритет хука widget_display_callback:"
157
 
158
  #: c:\Program Files
159
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:379
160
  msgid "RATE THE PLUGIN"
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:387
165
  msgid "Support forums:"
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:389
170
  msgid "English (wordpress.org)"
171
  msgstr "Английский (wordpress.org)"
172
 
173
  #: c:\Program Files
174
- #: (x86)\Zend\Apache2\htdocs\q2w3.ru-dev\wp-content\plugins\q2w3-fixed-widget/q2w3-fixed-widget.php:391
175
  msgid "Russian (www.q2w3.ru)"
176
  msgstr "Русский (www.q2w3.ru)"
177
 
 
 
 
 
 
 
178
  #~ msgid "English"
179
  #~ msgstr "Английский (wordpress.org)"
180
 
@@ -182,21 +194,20 @@ msgstr "Русский (www.q2w3.ru)"
182
  #~ msgstr "Русский (www.q2w3.ru)"
183
 
184
  #~ msgid ""
185
- #~ "Use this option only if you have problems with <a href=\"http://wordpress."
186
- #~ "org/support/topic/doesnt-work-with-infinte-scroll-for-widget-scripts\" "
187
- #~ "target=\"_blank\">other scroll oriented javascript code</a>"
188
  #~ msgstr ""
189
- #~ "Используйте эту опцию только в случае проблем с <a href=\"http://"
190
- #~ "wordpress.org/support/topic/doesnt-work-with-infinte-scroll-for-widget-"
191
- #~ "scripts\" target=\"_blank\">другими скриптами</a>"
192
 
193
  #~ msgid "Disable plugin on phone devices:"
194
  #~ msgstr "Отключить плагин на мобильных:"
195
 
196
  #~ msgid "Option depricated. Use Screen Max Width instead!"
197
  #~ msgstr ""
198
- #~ "Опция устарела и будет удалена в следующей версии! Вместо нее используйте "
199
- #~ "опцию \"Ширина окна браузера\""
200
 
201
  #~ msgid "Disable plugin on tablet devices:"
202
  #~ msgstr "Отключить плагин на планшетах:"
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)"
192
 
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 "Отключить плагин на планшетах:"
lang/ru_RU.mo DELETED
Binary file
q2w3-fixed-widget.php CHANGED
@@ -3,8 +3,9 @@
3
  Plugin Name: Q2W3 Fixed Widget
4
  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
  Author: Max Bond
7
- Version: 4.0.6
8
  Author URI: http://www.q2w3.ru/
9
  */
10
 
@@ -16,7 +17,7 @@ class q2w3_fixed_widget { // Plugin class
16
 
17
  const ID = 'q2w3_fixed_widget';
18
 
19
- const VERSION = '4.0.6';
20
 
21
  protected static $sidebars_widgets;
22
 
@@ -49,14 +50,14 @@ class q2w3_fixed_widget { // Plugin class
49
  } else {
50
 
51
  if ( $options['fix-widget-id'] ) self::registered_sidebars_filter();
52
-
53
  add_filter('widget_display_callback', array( __CLASS__, 'is_widget_fixed' ), $options['widget_display_callback_priority'], 3);
54
 
55
  add_action('wp_loaded', array( __CLASS__, 'custom_ids' ));
56
 
57
  add_action('wp_footer', array( __CLASS__, 'action_script' ));
58
 
59
- wp_enqueue_script('q2w3-fixed-widget', plugin_dir_url( __FILE__ ) . 'js/q2w3-fixed-widget.min.js', array('jquery'), self::VERSION);
60
 
61
  }
62
 
@@ -148,7 +149,7 @@ class q2w3_fixed_widget { // Plugin class
148
 
149
  $widgets_array = implode(',', $widgets);
150
 
151
- echo ' var q2w3_sidebar_'. $i .'_options = { "sidebar" : "'. $sidebar .'", "margin_top" : '. $options['margin-top'] .', "margin_bottom" : '. $options['margin-bottom'] .', "screen_max_width" : '. $options['screen-max-width'] .', "width_inherit" : '. $width_inherit .', "widgets" : ['. $widgets_array .'] };'.PHP_EOL;
152
 
153
  echo ' q2w3_sidebar(q2w3_sidebar_'. $i .'_options);'.PHP_EOL;
154
 
@@ -170,11 +171,13 @@ class q2w3_fixed_widget { // Plugin class
170
 
171
  public static function add_widget_option($widget, $return, $instance) {
172
 
 
 
173
  echo '<p>'.PHP_EOL;
174
 
175
- echo '<input type="checkbox" name="'. $widget->get_field_name('q2w3_fixed_widget') .'" value="1" '. checked( $instance['q2w3_fixed_widget'], 1, false ) .'/>'.PHP_EOL;
176
 
177
- echo '<label for="'. $widget->get_field_id('q2w3_fixed_widget') .'">'. __('Fixed widget', 'q2w3_fixed_widget') .'</label>'.PHP_EOL;
178
 
179
  echo '</p>'.PHP_EOL;
180
 
@@ -198,21 +201,25 @@ class q2w3_fixed_widget { // Plugin class
198
 
199
  protected static function load_language() {
200
 
201
- $currentLocale = get_locale();
 
 
 
 
202
 
203
  if (!empty($currentLocale)) {
204
 
205
  $moFile = dirname(__FILE__).'/lang/'.$currentLocale.".mo";
206
 
207
- if (@file_exists($moFile) && is_readable($moFile)) load_textdomain(self::ID, $moFile);
208
 
209
- }
210
 
211
  }
212
 
213
  public static function admin_menu() {
214
 
215
- 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' ) );
216
 
217
  }
218
 
@@ -236,6 +243,8 @@ class q2w3_fixed_widget { // Plugin class
236
 
237
  $d['widget_display_callback_priority'] = 30;
238
 
 
 
239
  return $d;
240
 
241
  }
@@ -266,6 +275,8 @@ class q2w3_fixed_widget { // Plugin class
266
 
267
  $input['custom-ids'] = trim(wp_strip_all_tags($input['custom-ids']));
268
 
 
 
269
  if ( !isset($input['fix-widget-id']) ) $input['fix-widget-id'] = false;
270
 
271
  if ( !isset($input['window-load-enabled']) ) $input['window-load-enabled'] = false;
@@ -290,19 +301,19 @@ class q2w3_fixed_widget { // Plugin class
290
 
291
  $screen = get_current_screen();
292
 
293
- add_meta_box(self::ID.'-general', __('General Options', 'q2w3_fixed_widget'), array( __CLASS__, 'settings_page_general_box' ), $screen, 'normal');
294
 
295
- add_meta_box(self::ID.'-compatibility', __('Compatibility', 'q2w3_fixed_widget'), array( __CLASS__, 'settings_page_compatibility_box' ), $screen, 'normal');
296
 
297
- add_meta_box(self::ID.'-custom-ids', __('Custom IDs', 'q2w3_fixed_widget'), array( __CLASS__, 'settings_page_custom_ids_box' ), $screen, 'normal');
298
 
299
- add_meta_box(self::ID.'-help', __('Help for users', 'q2w3_fixed_widget'), array( __CLASS__, 'settings_page_help_box' ), $screen, 'side');
300
 
301
- add_meta_box(self::ID.'-donate', __('Help for developer', 'q2w3_fixed_widget'), array( __CLASS__, 'settings_page_donate_box' ), $screen, 'side');
302
 
303
  $options = self::load_options();
304
 
305
- echo '<div class="wrap"><div id="icon-themes" class="icon32"><br /></div><h2>'. __('Fixed Widget Options', 'q2w3_fixed_widget') .'</h2>'.PHP_EOL;
306
 
307
  if ( isset($_GET['settings-updated']) && $_GET['settings-updated'] == 'true' ) {
308
 
@@ -346,39 +357,41 @@ class q2w3_fixed_widget { // Plugin class
346
 
347
  public static function settings_page_general_box($options) {
348
 
349
- echo '<p><span style="display: inline-block; width: 150px;">'. __('Margin Top:', 'q2w3_fixed_widget') .'</span><input type="text" name="'. self::ID .'[margin-top]" value="'. $options['margin-top'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('px', 'q2w3_fixed_widget') .'</p>'.PHP_EOL;
350
 
351
- 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;
352
 
353
- 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;
 
 
354
 
355
- echo '<p><span style="display: inline-block; width: 150px;">'. __('Screen Max 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') .' / '. __('Plugin will be disabled when browser window width equals or less then specified value', 'q2w3_fixed_widget') .'</p>'.PHP_EOL;
356
 
357
  }
358
 
359
  public static function settings_page_custom_ids_box($options) {
360
 
361
- echo '<p><span >'. __('Custom HTML IDs (each one on a new line):', 'q2w3_fixed_widget') .'</span><br/><br/><textarea name="'. self::ID .'[custom-ids]" style="width: 320px; height: 120px;">'. $options['custom-ids'] .'</textarea>'.PHP_EOL;
362
 
363
  }
364
 
365
  public static function settings_page_compatibility_box($options) {
366
 
367
- echo '<p><span style="display: inline-block; width: 280px;">'. __('Auto fix widget id:', 'q2w3_fixed_widget') .'</span><input type="checkbox" name="'. self::ID .'[fix-widget-id]" value="yes" '. checked('yes', $options['fix-widget-id'], false) .' /> </p>'.PHP_EOL;
368
 
369
- echo '<p><span style="display: inline-block; width: 280px;">'. __('Enable plugin for logged in users only:', 'q2w3_fixed_widget') .'</span><input type="checkbox" name="'. self::ID .'[logged_in_req]" value="yes" '. checked('yes', $options['logged_in_req'], false) .' /> '. __('Enable this option for debug purposes (frontend problems and etc.)', 'q2w3_fixed_widget') .'</p>'.PHP_EOL;
370
 
371
- echo '<p><span style="display: inline-block; width: 280px;">'. __('Inherit widget width from the parent container:', 'q2w3_fixed_widget') .'</span><input type="checkbox" name="'. self::ID .'[width-inherit]" value="yes" '. checked('yes', $options['width-inherit'], false) .' /> '. __('Enable this option for themes with responsive sidebar', 'q2w3_fixed_widget') .'</p>'.PHP_EOL;
372
 
373
- echo '<p><span style="display: inline-block; width: 280px;">'. __('Use jQuery(window).load() hook:', 'q2w3_fixed_widget') .'</span><input type="checkbox" name="'. self::ID .'[window-load-enabled]" value="yes" '. checked('yes', $options['window-load-enabled'], false) .' /> '. __('Enable this option only if you have problems with other scroll oriented javascript code', 'q2w3_fixed_widget') .'</p>'.PHP_EOL;
374
 
375
- echo '<p><span style="display: inline-block; width: 280px;">'. __('widget_display_callback hook priority:', 'q2w3_fixed_widget') .'</span><select name="'. self::ID .'[widget_display_callback_priority]"><option value="1" '. selected('1', $options['widget_display_callback_priority'], false) .'>1</option><option value="10" '. selected('10', $options['widget_display_callback_priority'], false) .'>10</option><option value="20" '. selected('20', $options['widget_display_callback_priority'], false) .'>20</option><option value="30" '. selected('30', $options['widget_display_callback_priority'], false) .'>30</option><option value="50" '. selected('50', $options['widget_display_callback_priority'], false) .'>50</option><option value="100" '. selected('100', $options['widget_display_callback_priority'], false) .'>100</option></select></p>'.PHP_EOL;
376
 
377
  }
378
 
379
  public static function settings_page_donate_box($options) {
380
 
381
- 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>';
382
 
383
  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;
384
 
@@ -386,11 +399,11 @@ class q2w3_fixed_widget { // Plugin class
386
 
387
  public static function settings_page_help_box($options) {
388
 
389
- echo '<p>'. __('Support forums:', 'q2w3_fixed_widget') .'</p>';
390
 
391
- echo '<ul><li><a href="http://wordpress.org/support/plugin/q2w3-fixed-widget/" target="_blank">'. __('English (wordpress.org)', 'q2w3_fixed_widget') .'</a></li>'.PHP_EOL;
392
 
393
- echo '<li><a href="http://www.q2w3.ru/2012/12/12/4827/" target="_blank">'. __('Russian (www.q2w3.ru)', 'q2w3_fixed_widget') .'</a></li></ul>'.PHP_EOL;
394
 
395
  }
396
 
3
  Plugin Name: Q2W3 Fixed Widget
4
  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
 
18
  const ID = 'q2w3_fixed_widget';
19
 
20
+ const VERSION = '4.1';
21
 
22
  protected static $sidebars_widgets;
23
 
50
  } else {
51
 
52
  if ( $options['fix-widget-id'] ) self::registered_sidebars_filter();
53
+
54
  add_filter('widget_display_callback', array( __CLASS__, 'is_widget_fixed' ), $options['widget_display_callback_priority'], 3);
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
 
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
 
171
 
172
  public static function add_widget_option($widget, $return, $instance) {
173
 
174
+ if ( isset($instance['q2w3_fixed_widget']) ) $iqfw = $instance['q2w3_fixed_widget']; else $iqfw = 0;
175
+
176
  echo '<p>'.PHP_EOL;
177
 
178
+ echo '<input type="checkbox" name="'. $widget->get_field_name('q2w3_fixed_widget') .'" value="1" '. checked( $iqfw, 1, false ) .'/>'.PHP_EOL;
179
 
180
+ echo '<label for="'. $widget->get_field_id('q2w3_fixed_widget') .'">'. __('Fixed widget', 'q2w3-fixed-widget') .'</label>'.PHP_EOL;
181
 
182
  echo '</p>'.PHP_EOL;
183
 
201
 
202
  protected static function load_language() {
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
 
243
 
244
  $d['widget_display_callback_priority'] = 30;
245
 
246
+ $d['stop-id'] = '';
247
+
248
  return $d;
249
 
250
  }
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']));
279
+
280
  if ( !isset($input['fix-widget-id']) ) $input['fix-widget-id'] = false;
281
 
282
  if ( !isset($input['window-load-enabled']) ) $input['window-load-enabled'] = false;
301
 
302
  $screen = get_current_screen();
303
 
304
+ add_meta_box(self::ID.'-general', __('General Options', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_general_box' ), $screen, 'normal');
305
 
306
+ add_meta_box(self::ID.'-compatibility', __('Compatibility', 'q2w3-fixed-widget'), array( __CLASS__, 'settings_page_compatibility_box' ), $screen, 'normal');
307
 
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;
317
 
318
  if ( isset($_GET['settings-updated']) && $_GET['settings-updated'] == 'true' ) {
319
 
357
 
358
  public static function settings_page_general_box($options) {
359
 
360
+ echo '<p><span style="display: inline-block; width: 150px;">'. __('Margin Top:', 'q2w3-fixed-widget') .'</span><input type="text" name="'. self::ID .'[margin-top]" value="'. $options['margin-top'] .'" style="width: 50px; text-align: center;" />&nbsp;'. __('px', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
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) {
373
 
374
+ echo '<p><span >'. __('Custom HTML IDs (each one on a new line):', 'q2w3-fixed-widget') .'</span><br/><br/><textarea name="'. self::ID .'[custom-ids]" style="width: 320px; height: 120px;">'. $options['custom-ids'] .'</textarea>'.PHP_EOL;
375
 
376
  }
377
 
378
  public static function settings_page_compatibility_box($options) {
379
 
380
+ echo '<p><span style="display: inline-block; width: 280px;">'. __('Auto fix widget id:', 'q2w3-fixed-widget') .'</span><input type="checkbox" name="'. self::ID .'[fix-widget-id]" value="yes" '. checked('yes', $options['fix-widget-id'], false) .' /> </p>'.PHP_EOL;
381
 
382
+ echo '<p><span style="display: inline-block; width: 280px;">'. __('Enable plugin for logged in users only:', 'q2w3-fixed-widget') .'</span><input type="checkbox" name="'. self::ID .'[logged_in_req]" value="yes" '. checked('yes', $options['logged_in_req'], false) .' /> '. __('Enable this option for debug purposes (frontend problems and etc.)', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
383
 
384
+ echo '<p><span style="display: inline-block; width: 280px;">'. __('Inherit widget width from the parent container:', 'q2w3-fixed-widget') .'</span><input type="checkbox" name="'. self::ID .'[width-inherit]" value="yes" '. checked('yes', $options['width-inherit'], false) .' /> '. __('Enable this option for themes with responsive sidebar', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
385
 
386
+ echo '<p><span style="display: inline-block; width: 280px;">'. __('Use jQuery(window).load() hook:', 'q2w3-fixed-widget') .'</span><input type="checkbox" name="'. self::ID .'[window-load-enabled]" value="yes" '. checked('yes', $options['window-load-enabled'], false) .' /> '. __('Enable this option only if you have problems with other scroll oriented javascript code', 'q2w3-fixed-widget') .'</p>'.PHP_EOL;
387
 
388
+ echo '<p><span style="display: inline-block; width: 280px;">'. __('widget_display_callback hook priority:', 'q2w3-fixed-widget') .'</span><select name="'. self::ID .'[widget_display_callback_priority]"><option value="1" '. selected('1', $options['widget_display_callback_priority'], false) .'>1</option><option value="10" '. selected('10', $options['widget_display_callback_priority'], false) .'>10</option><option value="20" '. selected('20', $options['widget_display_callback_priority'], false) .'>20</option><option value="30" '. selected('30', $options['widget_display_callback_priority'], false) .'>30</option><option value="50" '. selected('50', $options['widget_display_callback_priority'], false) .'>50</option><option value="100" '. selected('100', $options['widget_display_callback_priority'], false) .'>100</option></select></p>'.PHP_EOL;
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
 
399
 
400
  public static function settings_page_help_box($options) {
401
 
402
+ echo '<p>'. __('Support forums:', 'q2w3-fixed-widget') .'</p>';
403
 
404
+ echo '<ul><li><a href="http://wordpress.org/support/plugin/q2w3-fixed-widget/" target="_blank">'. __('English (wordpress.org)', 'q2w3-fixed-widget') .'</a></li>'.PHP_EOL;
405
 
406
+ echo '<li><a href="http://www.q2w3.ru/2012/12/12/4827/" target="_blank">'. __('Russian (www.q2w3.ru)', 'q2w3-fixed-widget') .'</a></li></ul>'.PHP_EOL;
407
 
408
  }
409
 
readme.txt CHANGED
@@ -2,9 +2,9 @@
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: 3.3
6
- Tested up to: 3.9.1
7
- Stable tag: 4.0.6
8
 
9
  Fixes positioning of the selected widgets, when the page is scrolled down.
10
 
@@ -15,9 +15,6 @@ and it will be always in sight when page is scrolled down or up. There is no pro
15
 
16
  [youtube http://www.youtube.com/watch?v=sHXmeH5TfnA]
17
 
18
- [Watch the live demo](http://store.places-finder.com/cp-ajax-post-load).
19
- Right sidebar, last three widgets. Scroll down to the bottom.
20
-
21
  Compatibility note. The plugin is not working with all themes. Theme requirements:
22
 
23
  * jQuery 1.7 required. jQuery 1.8.3 (or later) is recommended.
@@ -32,6 +29,7 @@ Supported languages:
32
  * Russian
33
  * Spanish - [Ramón](http://apasionados.es)
34
  * French - [Murat](http://wptheme.fr)
 
35
 
36
  == Installation ==
37
 
@@ -91,6 +89,13 @@ Send me email from this page: [http://www.q2w3.ru/contacts/](http://www.q2w3.ru/
91
 
92
  == Changelog ==
93
 
 
 
 
 
 
 
 
94
  = 4.0.6 =
95
  * A small [bug fix](http://wordpress.org/support/topic/widget-gets-wider-when-it-reaches-the-top)
96
  * Added French translation
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
 
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.
29
  * Russian
30
  * Spanish - [Ramón](http://apasionados.es)
31
  * French - [Murat](http://wptheme.fr)
32
+ * German - Stefan Meier
33
 
34
  == Installation ==
35
 
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!
95
+ * Fixed destruction of `jQuery(window).load` hook. There should be no problems with other jQuery plugins now!
96
+ * Added German translation
97
+ * Updated internationalization support
98
+
99
  = 4.0.6 =
100
  * A small [bug fix](http://wordpress.org/support/topic/widget-gets-wider-when-it-reaches-the-top)
101
  * Added French translation