diff --git a/site-default/modules/README.txt b/site-default/modules/README.txt
index 922339ed..abe884ee 100644
--- a/site-default/modules/README.txt
+++ b/site-default/modules/README.txt
@@ -69,9 +69,6 @@ learning module development:
There is a module development forum located at:
https://processwire.com/talk/forum/19-moduleplugin-development/
-For a tutorial on how to create modules, see:
-http://wiki.processwire.com/index.php/Module_Creation
-
Additional resources
--------------------
diff --git a/wire/core/AdminTheme.php b/wire/core/AdminTheme.php
index ce7469b3..ea3301f7 100644
--- a/wire/core/AdminTheme.php
+++ b/wire/core/AdminTheme.php
@@ -95,7 +95,7 @@ abstract class AdminTheme extends WireData implements Module {
}
/**
- * Initialize the admin theme systme and determine which admin theme should be used
+ * Initialize the admin theme system and determine which admin theme should be used
*
* All admin themes must call this init() method to register themselves.
*
diff --git a/wire/core/Config.php b/wire/core/Config.php
index 99a7f74d..8f2d2ce8 100644
--- a/wire/core/Config.php
+++ b/wire/core/Config.php
@@ -121,7 +121,7 @@
* @property bool $moduleCompile Allow use of compiled modules? #pw-group-modules
* @property array $wireMail Default WireMail module settings. #pw-group-modules
*
- * @property array $substituteModules Associative array with names of substitutute modules for when requested module doesn't exist #pw-group-modules
+ * @property array $substituteModules Associative array with names of substitute modules for when requested module doesn't exist #pw-group-modules
* @property array $logs Additional core logs to keep #pw-group-admin
* @property string $defaultAdminTheme Default admin theme: AdminThemeDefault or AdminThemeReno #pw-group-admin
* @property string $fatalErrorHTML HTML used for fatal error messages in HTTP mode. #pw-group-system
diff --git a/wire/modules/Jquery/JqueryUI/panel.js b/wire/modules/Jquery/JqueryUI/panel.js
index 6a2733f3..5c789176 100644
--- a/wire/modules/Jquery/JqueryUI/panel.js
+++ b/wire/modules/Jquery/JqueryUI/panel.js
@@ -163,7 +163,7 @@ var pwPanels = {
.attr('href', panelURL)
.on('click', pwPanels.buttonClickEvent)
.on('mouseover', pwPanels.buttonMouseoverEvent)
- .on('mouseut', pwPanels.buttonMouseoutEvent)
+ .on('mouseout', pwPanels.buttonMouseoutEvent)
.append($span);
var $panel = $('
')
diff --git a/wire/modules/Jquery/JqueryUI/panel.min.js b/wire/modules/Jquery/JqueryUI/panel.min.js
index b435bd22..94ef28fe 100644
--- a/wire/modules/Jquery/JqueryUI/panel.min.js
+++ b/wire/modules/Jquery/JqueryUI/panel.min.js
@@ -1 +1 @@
-var pwPanels={qty:0,init:function(){var a=window.location.href;if(a.indexOf("pw_panel=1")>-1){$(document).on("mouseover","a",function(){var b=$(this);var c=b.attr("target");if(typeof c=="undefined"||c.length==0){b.attr("target","_parent")}})}else{if(a.indexOf("pw_panel=2")>-1){}else{$(".pw-panel").each(function(){var b=$(this);pwPanels.addPanel(b)})}}},addPanel:function(a){var i=a.attr("data-href");var f=a.attr("data-panel-id");var b="pw-panel-container-"+(++pwPanels.qty);if(typeof i=="undefined"||!i.length){i=a.attr("href")}if(typeof i!="undefined"&&i.length){var d="";if(i.indexOf("#")>-1){var c=i.split("#");i=c[0];d="#"+c[1]}i+=(i.indexOf("?")>-1?"&":"?")+"modal=panel&pw_panel=";if(a!==null&&a.hasClass("pw-panel-links")){i+="2"}else{i+="1"}i+=d}var e=$("").attr("class","pw-panel-icon fa fa-angle-double-left");var g=$("").attr("class","ui-button-text").append(e);var h=$("").attr("class","pw-panel-button pw-panel-button-closed ui-button ui-state-default").attr("href",i).on("click",pwPanels.buttonClickEvent).on("mouseover",pwPanels.buttonMouseoverEvent).on("mouseut",pwPanels.buttonMouseoutEvent).append(g);var j=$("").attr("id",b).attr("class","pw-panel-container pw-panel-container-closed").append(h);$("body").append(j);if(typeof f!="undefined"&&f.length){$("#"+f).hide().addClass("pw-panel-element");j.addClass("pw-panel-container-element").attr("data-panel-id",f)}if(a!==null){pwPanels.initToggler(a,h,j)}else{j.addClass("pw-panel-left")}},initToggler:function(c,k,m){var f=c.hasClass("pw-panel-right")?"right":"left";var l=c.attr("data-tab-text");var i=c.attr("data-tab-icon");var g=c.attr("data-tab-offset");var b=c.attr("data-panel-width");var e=f=="right"?"left":"right";var d=1;m.addClass("pw-panel-tab pw-panel-"+f);m.attr("data-href",k.attr("href"));if(c.hasClass("pw-panel-reload")){m.addClass("pw-panel-reload")}if(typeof g!="undefined"){g=parseInt(g);if(g>-1){k.css("top",g+"px")}else{k.css("top","auto");k.css("bottom",Math.abs(g)+"px")}}if(typeof l!="undefined"&&l.length){var a=k.children(".ui-button-text");var j=$("").text(l);a.html(""+j.text()+"");k.addClass("pw-panel-button-text");d=7}if(typeof i!="undefined"&&i.length){var h=$("").addClass("fa fa-fw fa-"+i);var j=k.children(".ui-button-text");if(k.hasClass("pw-panel-button-text")){j.prepend(h)}else{j.empty().append(h);k.css(e,(-1*(k.outerWidth()))+"px")}}if(typeof b!="undefined"&&b.length){m.css("width",b);m.css(f,"-"+b)}if(f=="right"){}else{k.css("right",(-1*(d+k.height()))+"px")}if(!c.hasClass("pw-panel-tab")){k.addClass("pw-panel-button-hidden")}c.click(function(){k.click();return false}).on("mouseover",function(){k.mouseover()}).on("mouseout",function(){k.mouseout()})},initPanelContent:function(d){var b=d.find(".pw-panel-content");var a=d.attr("data-panel-id");if(b.length){return b}else{if(typeof a!="undefined"){var c=$("#"+a);if(c.length){b=$("").addClass("pw-panel-content").css("overflow","auto");d.append(b);b.append(c);c.show();c.trigger("pw-panel-init")}}else{b=$("").addClass("pw-panel-content").attr("src",d.attr("data-href"));d.append(b)}}return b},windowResizeEvent:function(){$(".pw-panel-container-init").each(function(){var c=$(this);if(c.hasClass("pw-panel-container-open")){return}var b=c.width();var a=(-1*b)+"px";if(c.hasClass("pw-panel-right")){c.css("right",a)}else{c.css("left",a)}})},buttonClickEvent:function(){var i=$(this);var k=i.closest(".pw-panel-container");var f=k.find(".pw-panel-content");var b=k.hasClass("pw-panel-container-open");var c=k.hasClass("pw-panel-container-loaded");var a=k.width();var e=k.hasClass("pw-panel-right")?"right":"left";var h=typeof jQuery.ui!="undefined";function d(){k.toggleClass("pw-panel-container-open pw-panel-container-closed");i.toggleClass("pw-panel-button-open pw-panel-button-closed")}if($(".pw-panel-container-init").length==0){$(window).resize(pwPanels.windowResizeEvent)}if(b){var j=(-1*a)+"px";if(h){if(e=="left"){k.animate({left:j},150,d)}else{k.animate({right:j},150,d)}}else{k.css(e,j);d()}$("body").css("overflow","");$("#pw-panel-shade").fadeOut("fast",function(){$(this).remove()});i.fadeOut("fast",function(){i.removeClass("ui-state-active");i.fadeIn("fast")});if(h&&e=="left"){k.resizable("destroy")}if(k.hasClass("pw-panel-reload")){k.find("iframe.pw-panel-content").remove()}}else{if(k.hasClass("pw-panel-reload")||!c){pwPanels.initPanelContent(k)}if(h){if(e=="left"){k.animate({left:0},150,d)}else{k.animate({right:0},150,d)}}else{k.css(e,0);d()}var g=$("
");k.before(g).fadeIn("fast");$("body").css("overflow","hidden");g.click(function(){var l=$(".pw-panel-container-open");if(!l.length){return false}l.find(".pw-panel-button").click()});if(h&&e=="left"){k.resizable({handles:"e",start:function(m,n){var l=$("").addClass("pw-panel-resizable-overlay").css({position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:1001,display:"hidden"});k.append(l)},stop:function(l,m){$(".pw-panel-resizable-overlay").remove()}})}k.addClass("pw-panel-container-init")}return false},buttonMouseoverEvent:function(){var a=$(this);var b=a.closest(".pw-panel-container");a.removeClass("ui-state-active").addClass("ui-state-hover");if(b.hasClass("pw-panel-container-loaded")){return}b.addClass("pw-panel-container-loaded");if(!b.hasClass("pw-panel-reload")){pwPanels.initPanelContent(b)}},buttonMouseoutEvent:function(){var a=$(this);var b=a.closest(".pw-panel-container");if(b.hasClass("pw-panel-container-open")){a.addClass("ui-state-active")}}};jQuery(document).ready(function(){pwPanels.init()});
\ No newline at end of file
+var pwPanels={qty:0,init:function(){var a=window.location.href;if(a.indexOf("pw_panel=1")>-1){$(document).on("mouseover","a",function(){var b=$(this);var c=b.attr("target");if(typeof c=="undefined"||c.length==0){b.attr("target","_parent")}})}else{if(a.indexOf("pw_panel=2")>-1){}else{$(".pw-panel").each(function(){var b=$(this);pwPanels.addPanel(b)})}}},addPanel:function(a){var i=a.attr("data-href");var f=a.attr("data-panel-id");var b="pw-panel-container-"+(++pwPanels.qty);if(typeof i=="undefined"||!i.length){i=a.attr("href")}if(typeof i!="undefined"&&i.length){var d="";if(i.indexOf("#")>-1){var c=i.split("#");i=c[0];d="#"+c[1]}i+=(i.indexOf("?")>-1?"&":"?")+"modal=panel&pw_panel=";if(a!==null&&a.hasClass("pw-panel-links")){i+="2"}else{i+="1"}i+=d}var e=$("").attr("class","pw-panel-icon fa fa-angle-double-left");var g=$("").attr("class","ui-button-text").append(e);var h=$("").attr("class","pw-panel-button pw-panel-button-closed ui-button ui-state-default").attr("href",i).on("click",pwPanels.buttonClickEvent).on("mouseover",pwPanels.buttonMouseoverEvent).on("mouseout",pwPanels.buttonMouseoutEvent).append(g);var j=$("").attr("id",b).attr("class","pw-panel-container pw-panel-container-closed").append(h);$("body").append(j);if(typeof f!="undefined"&&f.length){$("#"+f).hide().addClass("pw-panel-element");j.addClass("pw-panel-container-element").attr("data-panel-id",f)}if(a!==null){pwPanels.initToggler(a,h,j)}else{j.addClass("pw-panel-left")}},initToggler:function(c,k,m){var f=c.hasClass("pw-panel-right")?"right":"left";var l=c.attr("data-tab-text");var i=c.attr("data-tab-icon");var g=c.attr("data-tab-offset");var b=c.attr("data-panel-width");var e=f=="right"?"left":"right";var d=1;m.addClass("pw-panel-tab pw-panel-"+f);m.attr("data-href",k.attr("href"));if(c.hasClass("pw-panel-reload")){m.addClass("pw-panel-reload")}if(typeof g!="undefined"){g=parseInt(g);if(g>-1){k.css("top",g+"px")}else{k.css("top","auto");k.css("bottom",Math.abs(g)+"px")}}if(typeof l!="undefined"&&l.length){var a=k.children(".ui-button-text");var j=$("").text(l);a.html(""+j.text()+"");k.addClass("pw-panel-button-text");d=7}if(typeof i!="undefined"&&i.length){var h=$("").addClass("fa fa-fw fa-"+i);var j=k.children(".ui-button-text");if(k.hasClass("pw-panel-button-text")){j.prepend(h)}else{j.empty().append(h);k.css(e,(-1*(k.outerWidth()))+"px")}}if(typeof b!="undefined"&&b.length){m.css("width",b);m.css(f,"-"+b)}if(f=="right"){}else{k.css("right",(-1*(d+k.height()))+"px")}if(!c.hasClass("pw-panel-tab")){k.addClass("pw-panel-button-hidden")}c.click(function(){k.click();return false}).on("mouseover",function(){k.mouseover()}).on("mouseout",function(){k.mouseout()})},initPanelContent:function(d){var b=d.find(".pw-panel-content");var a=d.attr("data-panel-id");if(b.length){return b}else{if(typeof a!="undefined"){var c=$("#"+a);if(c.length){b=$("").addClass("pw-panel-content").css("overflow","auto");d.append(b);b.append(c);c.show();c.trigger("pw-panel-init")}}else{b=$("").addClass("pw-panel-content").attr("src",d.attr("data-href"));d.append(b)}}return b},windowResizeEvent:function(){$(".pw-panel-container-init").each(function(){var c=$(this);if(c.hasClass("pw-panel-container-open")){return}var b=c.width();var a=(-1*b)+"px";if(c.hasClass("pw-panel-right")){c.css("right",a)}else{c.css("left",a)}})},buttonClickEvent:function(){var i=$(this);var k=i.closest(".pw-panel-container");var f=k.find(".pw-panel-content");var b=k.hasClass("pw-panel-container-open");var c=k.hasClass("pw-panel-container-loaded");var a=k.width();var e=k.hasClass("pw-panel-right")?"right":"left";var h=typeof jQuery.ui!="undefined";function d(){k.toggleClass("pw-panel-container-open pw-panel-container-closed");i.toggleClass("pw-panel-button-open pw-panel-button-closed")}if($(".pw-panel-container-init").length==0){$(window).resize(pwPanels.windowResizeEvent)}if(b){var j=(-1*a)+"px";if(h){if(e=="left"){k.animate({left:j},150,d)}else{k.animate({right:j},150,d)}}else{k.css(e,j);d()}$("body").css("overflow","");$("#pw-panel-shade").fadeOut("fast",function(){$(this).remove()});i.fadeOut("fast",function(){i.removeClass("ui-state-active");i.fadeIn("fast")});if(h&&e=="left"){k.resizable("destroy")}if(k.hasClass("pw-panel-reload")){k.find("iframe.pw-panel-content").remove()}}else{if(k.hasClass("pw-panel-reload")||!c){pwPanels.initPanelContent(k)}if(h){if(e=="left"){k.animate({left:0},150,d)}else{k.animate({right:0},150,d)}}else{k.css(e,0);d()}var g=$("
");k.before(g).fadeIn("fast");$("body").css("overflow","hidden");g.click(function(){var l=$(".pw-panel-container-open");if(!l.length){return false}l.find(".pw-panel-button").click()});if(h&&e=="left"){k.resizable({handles:"e",start:function(m,n){var l=$("").addClass("pw-panel-resizable-overlay").css({position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:1001,display:"hidden"});k.append(l)},stop:function(l,m){$(".pw-panel-resizable-overlay").remove()}})}k.addClass("pw-panel-container-init")}return false},buttonMouseoverEvent:function(){var a=$(this);var b=a.closest(".pw-panel-container");a.removeClass("ui-state-active").addClass("ui-state-hover");if(b.hasClass("pw-panel-container-loaded")){return}b.addClass("pw-panel-container-loaded");if(!b.hasClass("pw-panel-reload")){pwPanels.initPanelContent(b)}},buttonMouseoutEvent:function(){var a=$(this);var b=a.closest(".pw-panel-container");if(b.hasClass("pw-panel-container-open")){a.addClass("ui-state-active")}}};jQuery(document).ready(function(){pwPanels.init()});
\ No newline at end of file
diff --git a/wire/modules/LazyCron.module b/wire/modules/LazyCron.module
index ec2ad916..2f0021a9 100644
--- a/wire/modules/LazyCron.module
+++ b/wire/modules/LazyCron.module
@@ -85,7 +85,7 @@ class LazyCron extends WireData implements Module {
"is guaranteed to be at least the time requested, rather than exactly the " .
"time requested. This is fine for most cases, but you can make it not lazy " .
"by connecting this to a real CRON job. See the module file for details. ",
- 'href' => 'http://processwire.com/talk/index.php/topic,284.0.html',
+ 'href' => 'https://processwire.com/api/modules/lazy-cron/',
'permanent' => false,
'singular' => true,
'autoload' => true,
diff --git a/wire/modules/Page/PageFrontEdit/PageFrontEditConfig.php b/wire/modules/Page/PageFrontEdit/PageFrontEditConfig.php
index d262bc85..5685136a 100644
--- a/wire/modules/Page/PageFrontEdit/PageFrontEditConfig.php
+++ b/wire/modules/Page/PageFrontEdit/PageFrontEditConfig.php
@@ -47,7 +47,7 @@ class PageFrontEditConfig extends ModuleConfig {
$f->icon = 'cube';
$f->label = $this->_('Option A: front-edit editable fields');
$f->description = $this->editHelpText;
- $f->description .= ' ' . $this->_('These text-based fields will be become editable on the front-end, directly in the page, simply by checking the boxes below.');
+ $f->description .= ' ' . $this->_('These text-based fields will become editable on the front-end, directly in the page, simply by checking the boxes below.');
$f->description .= ' ' . $this->_('**Be careful with this option:** If you are outputting the value of a field in more than one place on a page, you should instead use [Option B, C or D](https://processwire.com/api/modules/front-end-editing/).');
$f->optionColumns = 3;
foreach($fields as $field) {