Skip to content

Commit f764445

Browse files
committed
Improvements to widget edit and validation
1 parent 4dcef22 commit f764445

5 files changed

Lines changed: 73 additions & 46 deletions

File tree

BlogEngine/BlogEngine.NET/App_Data/datastore/widgets/be_WIDGET_ZONE.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<widget id="a73fa604-cf51-41cc-abac-f1b11643db73" title="Tag cloud" showTitle="True">Tag cloud</widget>
66
<widget id="deb9fd7c-e0f4-4f24-964d-d5f67332bab0" title="TextBox" showTitle="True">TextBox</widget>
77
<widget id="47fdb964-2c19-4099-9834-7d6ef8eb424b" title="Category list" showTitle="True">Category list</widget>
8-
<widget id="86a54bdc-32ad-4699-9494-d9969d825e8d" title="RecentComments" showTitle="True">RecentComments</widget>
8+
<widget id="86a54bdc-32ad-4699-9494-d9969d825e8d" title="Recent Comments" showTitle="True">RecentComments</widget>
99
<widget id="2c9454ad-9819-4f62-8b24-e92e45273c73" title="Page List" showTitle="True">Page List</widget>
1010
<widget id="c5535c01-4401-4b71-b9bb-8c3c794029d4" title="Post List" showTitle="True">Post List</widget>
1111
</widgets>

BlogEngine/BlogEngine.NET/Custom/Widgets/RecentComments/edit.cshtml

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,46 @@
33
var NumberOfComments = 10;
44
var widgetId = Request.QueryString["id"];
55
var settings = WidgetHelper.GetSettings(widgetId);
6-
6+
Validation.Add("txtNumberOfComments",
7+
Validator.Required("Field is required"),
8+
Validator.Integer("Field is numeric")
9+
);
710
if (IsPost)
811
{
9-
settings["numberofcomments"] = Request.Form["txtNumberOfComments"];
10-
WidgetHelper.SaveSettings(settings, widgetId);
12+
if (Validation.IsValid() && settings["numberofcomments"] != Request.Form["txtNumberOfComments"])
13+
{
14+
settings["numberofcomments"] = Request.Form["txtNumberOfComments"];
15+
WidgetHelper.SaveSettings(settings, widgetId);
16+
@:<script type="text/javascript">window.parent.toastr.success("Completed");</script>
17+
}
1118
}
1219
if (settings != null && settings.Count > 0)
1320
{
1421
NumberOfComments = int.Parse(settings["numberofcomments"]);
1522
}
1623
}
17-
<link rel="stylesheet" href="~/Content/bootstrap.min.css">
18-
<link rel="stylesheet" href="~/admin/themes/standard/css/styles.css">
19-
<style>
20-
body { background-color: #fff; }
21-
</style>
22-
<form method="post">
23-
<div class="form-group">
24-
<label>@Resources.labels.numberOfComments</label>
25-
<input type="text" class="form-control" id="txtNumberOfPosts" name="txtNumberOfComments" value="@NumberOfComments" />
26-
</div>
27-
<div>
28-
<button type="submit" onclick="window.parent.updateTitle()" class="btn btn-success btn-sm pull-left">
29-
Save
30-
</button>
31-
</div>
32-
</form>
24+
<!DOCTYPE html>
25+
<html>
26+
<head>
27+
<link rel="stylesheet" href="~/Content/bootstrap.min.css">
28+
<link rel="stylesheet" href="~/admin/themes/standard/css/styles.css">
29+
<style>
30+
body { background-color: #fff; }
31+
.field-validation-error { background-color: #d9534f; border-color: #d9534f; color: #fff; padding: 5px 15px; display: block; }
32+
</style>
33+
</head>
34+
<body>
35+
<form method="post">
36+
<div class="form-group">
37+
<label>@Resources.labels.numberOfComments</label>
38+
<input type="text" class="form-control" id="txtNumberOfComments" name="txtNumberOfComments" value="@NumberOfComments" />
39+
@Html.ValidationMessage("txtNumberOfComments")
40+
</div>
41+
<div>
42+
<button type="submit" onclick="window.parent.updateTitle()" class="btn btn-success btn-sm pull-left">
43+
@Resources.labels.save
44+
</button>
45+
</div>
46+
</form>
47+
</body>
48+
</html>
Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
<link rel="stylesheet" href="~/Content/bootstrap.min.css">
2-
<link rel="stylesheet" href="~/admin/themes/standard/css/styles.css">
3-
<style>
4-
body {
5-
background-color: #fff;
6-
}
7-
</style>
8-
<form method="post">
9-
<div>
10-
<button type="submit" onclick="window.parent.updateTitle()" class="btn btn-success btn-sm pull-left">
11-
Save
12-
</button>
13-
</div>
14-
</form>
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<link rel="stylesheet" href="~/Content/bootstrap.min.css">
5+
<link rel="stylesheet" href="~/admin/themes/standard/css/styles.css">
6+
<style>body { background-color: #fff; }</style>
7+
</head>
8+
<body>
9+
<form method="post">
10+
<div>
11+
<button type="submit" onclick="window.parent.updateTitle()" class="btn btn-success btn-sm pull-left">
12+
@Resources.labels.save
13+
</button>
14+
</div>
15+
</form>
16+
</body>
17+
</html>

BlogEngine/BlogEngine.NET/admin/app/custom/widgets/widgetController.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
$scope.editId = id;
3939
$scope.editTitle = title;
4040
$("#txtWidgetTitle").val(title);
41+
$("#titleValidation").hide();
4142
$.ajax({
4243
type: 'HEAD',
4344
url: customSrc,
@@ -54,7 +55,6 @@
5455

5556
$scope.closeEditForm = function () {
5657
$("#edit-widget").modal("hide");
57-
$scope.load();
5858
}
5959

6060
$scope.moveObject = function (from, to, fromList, toList) {
@@ -91,22 +91,29 @@
9191
}
9292

9393
$scope.updateTitle = function () {
94-
if ($scope.editTitle != $("#txtWidgetTitle").val()) {
95-
for (var i = 0; i < $scope.vm.WidgetZones.length; i++) {
96-
for (var j = 0; j < $scope.vm.WidgetZones[i].Widgets.length; j++) {
97-
if ($scope.vm.WidgetZones[i].Widgets[j].Id === $scope.editId) {
98-
$scope.vm.WidgetZones[i].Widgets[j].Title = $("#txtWidgetTitle").val();
94+
if ($("#txtWidgetTitle").val().length > 0) {
95+
if ($scope.editTitle != $("#txtWidgetTitle").val()) {
96+
for (var i = 0; i < $scope.vm.WidgetZones.length; i++) {
97+
for (var j = 0; j < $scope.vm.WidgetZones[i].Widgets.length; j++) {
98+
if ($scope.vm.WidgetZones[i].Widgets[j].Id === $scope.editId) {
99+
$scope.vm.WidgetZones[i].Widgets[j].Title = $("#txtWidgetTitle").val();
100+
}
99101
}
100102
}
103+
$scope.save();
101104
}
102-
$scope.save();
103-
}
105+
}
106+
else {
107+
$("#titleValidation").show();
108+
$("#txtWidgetTitle").focus();
109+
}
104110
}
105111

106112
$scope.load();
107113

108114
$(document).ready(function () {
109115
bindCommon();
116+
$("#titleValidation").hide();
110117
});
111118
}]);
112119

BlogEngine/BlogEngine.NET/admin/app/custom/widgets/widgetView.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
<div data-ng-controller="CustomWidgetsController">
22
<style>
3-
.sortable-empty {
4-
border: 3px dashed #b4b9be;
5-
padding: 15px;
6-
}
3+
.sortable-empty { border: 3px dashed #b4b9be; padding: 15px; }
4+
.field-validation-error { background-color: #d9534f; border-color: #d9534f; color: #ffffff; padding: 5px 15px; display: block; }
75
</style>
86
<div class="main-header clearfix">
97
<h2 class="page-title pull-left">{{lbl.widgets}}</h2>
@@ -23,6 +21,9 @@ <h4 class="modal-title">{{editTitle}}</h4>
2321
<div class="form-group">
2422
<label for="txtWidgetTitle">{{lbl.title}}</label>
2523
<input type="text" value="{{editTitle}}" name="txtWidgetTitle" id="txtWidgetTitle" class="form-control">
24+
<span id="titleValidation" class="field-validation-error">
25+
Field is required
26+
</span>
2627
</div>
2728
<iframe id="settingsFrame" ng-src="{{editSrc}}"></iframe>
2829
</div>

0 commit comments

Comments
 (0)