diff --git a/config templates/config/Dashboard.config b/config templates/config/Dashboard.config
index 434bd4cfc0..acc4bc25cf 100644
--- a/config templates/config/Dashboard.config
+++ b/config templates/config/Dashboard.config
@@ -87,4 +87,14 @@
+
+
The uGoLive checklist is a checklist of the most widely accredited best practises when deploying an Umbraco website. uGoLive performs a complete system check against these practises, and highlights any areas that need attention.
+ +
Checking...");
+ $.getJSON(basePath + '/uGoLive/Check/'+ checkId +'.aspx', function(data) {
+
+ var $checkEl = $("span.status[data-check-id=" + checkId + "]");
+
+ $checkEl.empty();
+
+ switch(data.Status.Value) {
+ case "Passed":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").addClass("disabled");
+ break;
+ case "Indeterminate":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").removeClass("disabled");
+ break;
+ case "Failed":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").removeClass("disabled");
+ break;
+ }
+
+ if($.trim(data.Message) != "")
+ $checkEl.append(data.Message);
+
+ if(callBack != undefined)
+ callBack(data);
+ });
+ }
+
+ function performRectify(checkId, callBack) {
+ $("span.status[data-check-id=" + checkId + "]").html("
Rectifying...");
+ $.getJSON(basePath + '/uGoLive/Rectify/'+ checkId +'.aspx', function(data) {
+
+ var $checkEl = $("span.status[data-check-id=" + checkId + "]");
+
+ $checkEl.empty();
+
+ switch(data.Status.Value) {
+ case "Success":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").addClass("disabled");
+ break;
+ case "Failed":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").removeClass("disabled");
+ break;
+ }
+
+ if($.trim(data.Message) != "")
+ $checkEl.append(data.Message);
+
+ if(callBack != undefined)
+ callBack(data);
+ });
+ }
+
+ return {
+
+ init: function (o) {
+
+ // Set the paths
+ if (typeof(o.umbracoPath) != 'undefined')
+ umbracoPath = o.umbracoPath;
+ if (typeof(o.basePath) != 'undefined')
+ basePath = o.basePath;
+
+ // Parse all checks
+ $("span.status").each(function (idx, el)
+ {
+ checks.push($(el).attr("data-check-id"));
+ });
+
+ // Hookup run all check button
+ $("#btnRunChecks").click(function(e) {
+
+ e.preventDefault();
+
+ var $this = $(this);
+
+ if(!$this.hasClass("disabled")) {
+
+ // Clear out previous checks
+ $("span.status").empty();
+
+ // Update button
+ $this.text("Running checks...");
+ $this.addClass("disabled");
+ $("a.check").attr("disabled", "disabled");
+
+ // Start checks
+ currentCheckIndex = 0;
+ performNextCheck();
+
+ }
+ });
+
+ // Hookup individual check buttons
+ $("a.check").click(function(e) {
+
+ e.preventDefault();
+
+ var $this = $(this);
+
+ if(!$this.hasClass("disabled")) {
+
+ $this.addClass("disabled");
+ var checkId = $this.attr("data-check-id");
+ performCheck(checkId, function(data) {
+ $this.removeClass("disabled");
+ });
+
+ }
+ });
+
+ // Hookup individual rectify buttons
+ $("a.rectify").click(function(e) {
+
+ e.preventDefault();
+
+ var $this = $(this);
+
+ if(!$this.hasClass("disabled")) {
+
+ $this.addClass("disabled");
+ var checkId = $this.attr("data-check-id");
+ performRectify(checkId, function(data) {
+ //$this.removeAttr("disabled");
+ });
+
+ }
+ });
+ }
+
+ };
+
+ })();
+
+})(jQuery)
\ No newline at end of file
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/cog.png b/umbraco/presentation/umbraco/plugins/uGoLive/cog.png
new file mode 100644
index 0000000000..67de2c6ccb
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/cog.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/cross.png b/umbraco/presentation/umbraco/plugins/uGoLive/cross.png
new file mode 100644
index 0000000000..1514d51a3c
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/cross.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/error.png b/umbraco/presentation/umbraco/plugins/uGoLive/error.png
new file mode 100644
index 0000000000..628cf2dae3
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/error.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/help.png b/umbraco/presentation/umbraco/plugins/uGoLive/help.png
new file mode 100644
index 0000000000..5c870176d4
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/help.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/icon.png b/umbraco/presentation/umbraco/plugins/uGoLive/icon.png
new file mode 100644
index 0000000000..307e473f26
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/icon.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/run.png b/umbraco/presentation/umbraco/plugins/uGoLive/run.png
new file mode 100644
index 0000000000..0846555d0c
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/run.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/throbber.gif b/umbraco/presentation/umbraco/plugins/uGoLive/throbber.gif
new file mode 100644
index 0000000000..dc21df1837
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/throbber.gif differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/tick.png b/umbraco/presentation/umbraco/plugins/uGoLive/tick.png
new file mode 100644
index 0000000000..a9925a06ab
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/tick.png differ
Checking...");
+ $.getJSON(basePath + '/uGoLive/Check/'+ checkId +'.aspx', function(data) {
+
+ var $checkEl = $("span.status[data-check-id=" + checkId + "]");
+
+ $checkEl.empty();
+
+ switch(data.Status.Value) {
+ case "Passed":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").addClass("disabled");
+ break;
+ case "Indeterminate":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").removeClass("disabled");
+ break;
+ case "Failed":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").removeClass("disabled");
+ break;
+ }
+
+ if($.trim(data.Message) != "")
+ $checkEl.append(data.Message);
+
+ if(callBack != undefined)
+ callBack(data);
+ });
+ }
+
+ function performRectify(checkId, callBack) {
+ $("span.status[data-check-id=" + checkId + "]").html("
Rectifying...");
+ $.getJSON(basePath + '/uGoLive/Rectify/'+ checkId +'.aspx', function(data) {
+
+ var $checkEl = $("span.status[data-check-id=" + checkId + "]");
+
+ $checkEl.empty();
+
+ switch(data.Status.Value) {
+ case "Success":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").addClass("disabled");
+ break;
+ case "Failed":
+ $checkEl.append("
");
+ $("a.rectify[data-check-id=" + checkId + "][data-check-can-rectify='true']").removeClass("disabled");
+ break;
+ }
+
+ if($.trim(data.Message) != "")
+ $checkEl.append(data.Message);
+
+ if(callBack != undefined)
+ callBack(data);
+ });
+ }
+
+ return {
+
+ init: function (o) {
+
+ // Set the paths
+ if (typeof(o.umbracoPath) != 'undefined')
+ umbracoPath = o.umbracoPath;
+ if (typeof(o.basePath) != 'undefined')
+ basePath = o.basePath;
+
+ // Parse all checks
+ $("span.status").each(function (idx, el)
+ {
+ checks.push($(el).attr("data-check-id"));
+ });
+
+ // Hookup run all check button
+ $("#btnRunChecks").click(function(e) {
+
+ e.preventDefault();
+
+ var $this = $(this);
+
+ if(!$this.hasClass("disabled")) {
+
+ // Clear out previous checks
+ $("span.status").empty();
+
+ // Update button
+ $this.text("Running checks...");
+ $this.addClass("disabled");
+ $("a.check").attr("disabled", "disabled");
+
+ // Start checks
+ currentCheckIndex = 0;
+ performNextCheck();
+
+ }
+ });
+
+ // Hookup individual check buttons
+ $("a.check").click(function(e) {
+
+ e.preventDefault();
+
+ var $this = $(this);
+
+ if(!$this.hasClass("disabled")) {
+
+ $this.addClass("disabled");
+ var checkId = $this.attr("data-check-id");
+ performCheck(checkId, function(data) {
+ $this.removeClass("disabled");
+ });
+
+ }
+ });
+
+ // Hookup individual rectify buttons
+ $("a.rectify").click(function(e) {
+
+ e.preventDefault();
+
+ var $this = $(this);
+
+ if(!$this.hasClass("disabled")) {
+
+ $this.addClass("disabled");
+ var checkId = $this.attr("data-check-id");
+ performRectify(checkId, function(data) {
+ //$this.removeAttr("disabled");
+ });
+
+ }
+ });
+ }
+
+ };
+
+ })();
+
+})(jQuery)
\ No newline at end of file
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/cog.png b/umbraco/presentation/umbraco/plugins/uGoLive/cog.png
new file mode 100644
index 0000000000..67de2c6ccb
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/cog.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/cross.png b/umbraco/presentation/umbraco/plugins/uGoLive/cross.png
new file mode 100644
index 0000000000..1514d51a3c
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/cross.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/error.png b/umbraco/presentation/umbraco/plugins/uGoLive/error.png
new file mode 100644
index 0000000000..628cf2dae3
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/error.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/help.png b/umbraco/presentation/umbraco/plugins/uGoLive/help.png
new file mode 100644
index 0000000000..5c870176d4
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/help.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/icon.png b/umbraco/presentation/umbraco/plugins/uGoLive/icon.png
new file mode 100644
index 0000000000..307e473f26
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/icon.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/run.png b/umbraco/presentation/umbraco/plugins/uGoLive/run.png
new file mode 100644
index 0000000000..0846555d0c
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/run.png differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/throbber.gif b/umbraco/presentation/umbraco/plugins/uGoLive/throbber.gif
new file mode 100644
index 0000000000..dc21df1837
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/throbber.gif differ
diff --git a/umbraco/presentation/umbraco/plugins/uGoLive/tick.png b/umbraco/presentation/umbraco/plugins/uGoLive/tick.png
new file mode 100644
index 0000000000..a9925a06ab
Binary files /dev/null and b/umbraco/presentation/umbraco/plugins/uGoLive/tick.png differ