mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Refactored the audit trail settings UI and cleaned up a bunch of UI strings. Renamed some resource files.
This commit is contained in:
@@ -78,8 +78,10 @@
|
||||
<None Include="Placement.info" />
|
||||
<Content Include="Lib\XmlDiffPatch\xmldiffpatch.dll" />
|
||||
<Content Include="Recipes\audit-trail.recipe.xml" />
|
||||
<Content Include="Scripts\audit-trail-admin.js" />
|
||||
<Content Include="Styles\admin.css" />
|
||||
<Content Include="Scripts\audittrail-admin.js" />
|
||||
<Content Include="Scripts\audittrail-checkall.js" />
|
||||
<Content Include="Styles\audittrail-admin.css" />
|
||||
<Content Include="Styles\audittrail-settings.css" />
|
||||
<Content Include="Styles\custom-grid.css" />
|
||||
<Content Include="Styles\menu.audit-trail-admin.css" />
|
||||
<Content Include="Styles\menu.audit-trail.png" />
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Orchard.AuditTrail.Providers.AuditTrail {
|
||||
|
||||
public override void Describe(DescribeContext context) {
|
||||
context.For("AuditTrailSettings", T("Audit Trail Settings"))
|
||||
.Event(this, EventsChanged, T("Events Changed"), T("Audit Trail event settings were changed."), enableByDefault: true, isMandatory: true);
|
||||
.Event(this, EventsChanged, T("Events changed"), T("Audit trail event settings were changed."), enableByDefault: true, isMandatory: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ namespace Orchard.AuditTrail.Providers.AuditTrail {
|
||||
|
||||
public override void Describe(DescribeContext context) {
|
||||
context.For("AuditTrailSettings", T("Audit Trail Settings"))
|
||||
.Event(this, TrimmingSettingsChanged, T("Trimming Settings Changed"), T("Audit Trail trimming settings were changed."), enableByDefault: true);
|
||||
.Event(this, TrimmingSettingsChanged, T("Trimming settings changed"), T("Audit trail trimming settings were changed."), enableByDefault: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,12 +25,12 @@ namespace Orchard.AuditTrail.Providers.Content {
|
||||
}
|
||||
|
||||
public override void Describe(DescribeContext context) {
|
||||
context.For("Content", T("Content"))
|
||||
.Event(this, Created, T("Created"), T("Content was created."), enableByDefault: true)
|
||||
.Event(this, Saved, T("Saved"), T("Content was saved."), enableByDefault: true)
|
||||
.Event(this, Published, T("Published"), T("Content was published."), enableByDefault: true)
|
||||
.Event(this, Unpublished, T("Unpublished"), T("Content was unpublished."), enableByDefault: true)
|
||||
.Event(this, Removed, T("Removed"), T("Content was deleted."), enableByDefault: true);
|
||||
context.For("Content", T("Content Items"))
|
||||
.Event(this, Created, T("Created"), T("A content item was created."), enableByDefault: true)
|
||||
.Event(this, Saved, T("Saved"), T("A content item was saved."), enableByDefault: true)
|
||||
.Event(this, Published, T("Published"), T("A content item was published."), enableByDefault: true)
|
||||
.Event(this, Unpublished, T("Unpublished"), T("A content item was unpublished."), enableByDefault: true)
|
||||
.Event(this, Removed, T("Removed"), T("A content item was deleted."), enableByDefault: true);
|
||||
|
||||
context.QueryFilter(QueryFilter);
|
||||
context.DisplayFilter(DisplayFilter);
|
||||
|
||||
@@ -14,14 +14,14 @@ namespace Orchard.AuditTrail.Providers.ContentDefinition {
|
||||
public const string FieldSettingsUpdated = "FieldSettingsUpdated";
|
||||
|
||||
public override void Describe(DescribeContext context) {
|
||||
context.For("ContentPart", T("Content Part"))
|
||||
.Event(this, Created, T("Created"), T("Content Type was created."), enableByDefault: true)
|
||||
.Event(this, Removed, T("Removed"), T("Content Type was removed."), enableByDefault: true)
|
||||
.Event(this, DescriptionChanged, T("Description changed"), T("Content Part description was changed."), enableByDefault: true)
|
||||
.Event(this, FieldAdded, T("Field added"), T("Content Field was added."), enableByDefault: true)
|
||||
.Event(this, FieldRemoved, T("Field removed"), T("Content Field was removed."), enableByDefault: true)
|
||||
.Event(this, PartSettingsUpdated, T("Part settings updated"), T("Content Part settings were updated."), enableByDefault: true)
|
||||
.Event(this, FieldSettingsUpdated, T("Field settings updated"), T("Content Field settings were updated."), enableByDefault: true);
|
||||
context.For("ContentPart", T("Content Parts"))
|
||||
.Event(this, Created, T("Created"), T("A content type was created."), enableByDefault: true)
|
||||
.Event(this, Removed, T("Removed"), T("A content type was removed."), enableByDefault: true)
|
||||
.Event(this, DescriptionChanged, T("Description changed"), T("A content part description was changed."), enableByDefault: true)
|
||||
.Event(this, FieldAdded, T("Field added"), T("A field was added to a content part."), enableByDefault: true)
|
||||
.Event(this, FieldRemoved, T("Field removed"), T("A field was removed from a content part."), enableByDefault: true)
|
||||
.Event(this, PartSettingsUpdated, T("Part settings updated"), T("The settings of a content part were updated."), enableByDefault: true)
|
||||
.Event(this, FieldSettingsUpdated, T("Field settings updated"), T("The settings of a field on a content part were updated."), enableByDefault: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,12 +14,12 @@ namespace Orchard.AuditTrail.Providers.Roles {
|
||||
public const string UserRemoved = "UserRemoved";
|
||||
|
||||
public override void Describe(DescribeContext context) {
|
||||
context.For("Role", T("Role"))
|
||||
context.For("Role", T("Roles"))
|
||||
.Event(this, Created, T("Created"), T("A role was created."), enableByDefault: true)
|
||||
.Event(this, Removed, T("Removed"), T("A role was removed."), enableByDefault: true)
|
||||
.Event(this, Renamed, T("Renamed"), T("A role was renamed."), enableByDefault: true)
|
||||
.Event(this, PermissionAdded, T("Permission added"), T("Permission was added to a role."), enableByDefault: true)
|
||||
.Event(this, PermissionRemoved, T("Permission removed"), T("Permission was removed from a role."), enableByDefault: true)
|
||||
.Event(this, PermissionAdded, T("Permission added"), T("A permission was added to a role."), enableByDefault: true)
|
||||
.Event(this, PermissionRemoved, T("Permission removed"), T("A permission was removed from a role."), enableByDefault: true)
|
||||
.Event(this, UserAdded, T("User added"), T("A user was added to a role."), enableByDefault: true)
|
||||
.Event(this, UserRemoved, T("User removed"), T("A user was removed from a role."), enableByDefault: true);
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace Orchard.AuditTrail.Providers.Users {
|
||||
public const string PasswordChanged = "PasswordChanged";
|
||||
|
||||
public override void Describe(DescribeContext context) {
|
||||
context.For("User", T("User"))
|
||||
context.For("User", T("Users"))
|
||||
.Event(this, LoggedIn, T("Logged in"), T("A user was successfully logged in."), enableByDefault: true)
|
||||
.Event(this, LoggedOut, T("Logged out"), T("A user explicitly logged out."), enableByDefault: true)
|
||||
.Event(this, LogInFailed, T("Login failed"), T("An attempt to login failed due to an incorrect username/email and/or password."), enableByDefault: true)
|
||||
.Event(this, LoggedOut, T("Logged out"), T("A user actively logged out."), enableByDefault: true)
|
||||
.Event(this, LogInFailed, T("Login failed"), T("An attempt to login failed due to incorrect credentials."), enableByDefault: true)
|
||||
.Event(this, PasswordChanged, T("Password changed"), T("A user's password was changed."), enableByDefault: true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
(function($) {
|
||||
|
||||
var initExpandoControl = function() {
|
||||
$(".expando-wrapper legend").expandoControl(
|
||||
function(controller) {
|
||||
return controller.nextAll(".expando");
|
||||
}, {
|
||||
collapse: true,
|
||||
remember: true
|
||||
});
|
||||
};
|
||||
|
||||
var initCheckAll = function() {
|
||||
$("table.check-all").each(function() {
|
||||
var table = $(this);
|
||||
var controller = table.find("thead input[type=\"checkbox\"]");
|
||||
var checkboxes = table.find("tbody input[type=\"checkbox\"]:not(:disabled)");
|
||||
|
||||
var updateController = function () {
|
||||
var allChecked = checkboxes.filter(":not(:checked)").length == 0;
|
||||
controller.prop("checked", allChecked);
|
||||
}
|
||||
|
||||
table.on("change", "thead input[type=\"checkbox\"]", function() {
|
||||
var isChecked = $(this).is(":checked");
|
||||
checkboxes.prop("checked", isChecked);
|
||||
});
|
||||
|
||||
table.on("change", "tbody input[type=\"checkbox\"]", function () {
|
||||
updateController();
|
||||
});
|
||||
|
||||
updateController();
|
||||
});
|
||||
};
|
||||
|
||||
var disableContentEditor = function () {
|
||||
$(".content-disabled input").prop("disabled", true);
|
||||
$(".content-disabled textarea").prop("disabled", true);
|
||||
$(".content-disabled button").prop("disabled", true);
|
||||
};
|
||||
|
||||
$(function() {
|
||||
initExpandoControl();
|
||||
initCheckAll();
|
||||
disableContentEditor();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,24 @@
|
||||
(function($) {
|
||||
|
||||
var initExpandoControl = function() {
|
||||
$(".expando-wrapper legend").expandoControl(
|
||||
function(controller) {
|
||||
return controller.nextAll(".expando");
|
||||
}, {
|
||||
collapse: true,
|
||||
remember: true
|
||||
});
|
||||
};
|
||||
|
||||
var disableContentEditor = function () {
|
||||
$(".content-disabled input").prop("disabled", true);
|
||||
$(".content-disabled textarea").prop("disabled", true);
|
||||
$(".content-disabled button").prop("disabled", true);
|
||||
};
|
||||
|
||||
$(function() {
|
||||
initExpandoControl();
|
||||
disableContentEditor();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,23 @@
|
||||
$(function () {
|
||||
$(".check-all-container").each(function () {
|
||||
var container = $(this);
|
||||
var master = container.find("input[type=\"checkbox\"].check-all-master");
|
||||
var slaves = container.find("input[type=\"checkbox\"]:not(:disabled).check-all-slave");
|
||||
|
||||
var updateMaster = function () {
|
||||
var allChecked = slaves.filter(":not(:checked)").length == 0;
|
||||
master.prop("checked", allChecked);
|
||||
}
|
||||
|
||||
master.on("change", function () {
|
||||
var isChecked = $(this).is(":checked");
|
||||
slaves.prop("checked", isChecked);
|
||||
});
|
||||
|
||||
slaves.on("change", function () {
|
||||
updateMaster();
|
||||
});
|
||||
|
||||
updateMaster();
|
||||
});
|
||||
});
|
||||
@@ -1,52 +0,0 @@
|
||||
.audit-trail-filter {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.audit-trail-filter fieldset label {
|
||||
display: inline-block;
|
||||
width: 10em;
|
||||
}
|
||||
|
||||
.audit-trail-filter fieldset label.inline {
|
||||
display: inline;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.audit-trail-list .info {
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
.audit-trail-list .event-content .version {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.audit-trail-event fieldset legend span {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.audit-trail-site-settings table th.event-name {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.audit-trail-site-settings table th.event-enabled {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.content-disabled {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content-disabled .overlay {
|
||||
position: absolute;
|
||||
left: -24px;
|
||||
top: -16px;
|
||||
right: -24px;
|
||||
bottom: -28px;
|
||||
background: url('overlay.png');
|
||||
}
|
||||
|
||||
.content-disabled .edit-item-secondary,
|
||||
.content-disabled .audit-trail.expando-wrapper,
|
||||
.content-disabled .audit-trail-link {
|
||||
display: none;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
.audit-trail-filter {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.audit-trail-filter fieldset label {
|
||||
display: inline-block;
|
||||
width: 10em;
|
||||
}
|
||||
|
||||
.audit-trail-filter fieldset label.inline {
|
||||
display: inline;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.audit-trail-list .info {
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
.audit-trail-list .event-content .version {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.content-disabled {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content-disabled .overlay {
|
||||
position: absolute;
|
||||
left: -24px;
|
||||
top: -16px;
|
||||
right: -24px;
|
||||
bottom: -28px;
|
||||
background: url('overlay.png');
|
||||
}
|
||||
|
||||
.content-disabled .edit-item-secondary,
|
||||
.content-disabled .audit-trail.expando-wrapper,
|
||||
.content-disabled .audit-trail-link {
|
||||
display: none;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
.audittrail-settings-section table.audittrail-events-table {
|
||||
width: auto;
|
||||
min-width: 600px;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.audittrail-settings-section tbody.audittrail-category-body tr th {
|
||||
background-color: #ebebeb;
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.audittrail-settings-section .audittrail-events-table .audittrail-event-enabled-cell {
|
||||
text-align: right;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
@model Orchard.AuditTrail.ViewModels.AuditTrailDetailsViewModel
|
||||
@{
|
||||
Style.Include("admin.css");
|
||||
Style.Include("audittrail-admin.css");
|
||||
}
|
||||
@{
|
||||
var record = Model.Record;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@model Orchard.AuditTrail.ViewModels.AuditTrailViewModel
|
||||
@{
|
||||
Style.Include("custom-grid.css");
|
||||
Style.Include("admin.css");
|
||||
Style.Include("audittrail-admin.css");
|
||||
var orderBy = Model.OrderBy;
|
||||
var orderByItems = new List<SelectListItem> {
|
||||
new SelectListItem {Text = T("Date (desc)").Text, Value = AuditTrailOrderBy.DateDescending.ToString(), Selected = Model.OrderBy == AuditTrailOrderBy.DateDescending},
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
@using Orchard.ContentManagement
|
||||
@{
|
||||
Style.Include("admin.css");
|
||||
Style.Include("audittrail-admin.css");
|
||||
Script.Require("ShapesBase");
|
||||
Script.Include("~/Themes/TheAdmin/scripts/admin.js").AtFoot();
|
||||
Script.Include("audit-trail-admin.js").AtFoot();
|
||||
Script.Include("audittrail-admin.js").AtFoot();
|
||||
|
||||
var contentItem = (ContentItem)Model.ContentItem;
|
||||
Layout.Title = T("{0} - (version {1})", contentItem.ContentType, contentItem.Version);
|
||||
|
||||
@@ -1,51 +1,53 @@
|
||||
@model Orchard.AuditTrail.ViewModels.AuditTrailSettingsViewModel
|
||||
@{
|
||||
Style.Include("admin.css");
|
||||
Style.Include("audittrail-settings.css");
|
||||
Script.Require("ShapesBase");
|
||||
Script.Include("~/Themes/TheAdmin/scripts/admin.js").AtFoot();
|
||||
Script.Include("audit-trail-admin.js").AtFoot();
|
||||
//Script.Include("~/Themes/TheAdmin/scripts/admin.js").AtFoot();
|
||||
Script.Include("audittrail-checkall.js").AtFoot();
|
||||
}
|
||||
<div class="audit-trail-site-settings">
|
||||
<fieldset>
|
||||
<legend>@T("Specify the events to audit")</legend>
|
||||
@{
|
||||
var i = 0;
|
||||
}
|
||||
@foreach (var category in Model.Categories) {
|
||||
<fieldset>
|
||||
<legend>@category.Name</legend>
|
||||
<input type="hidden" name="AuditTrailSettingsPart.Categories[@i].Category" value="@category.Category" />
|
||||
<table class="items check-all">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="event-name">@T("Event")</th>
|
||||
<th>@T("Description")</th>
|
||||
<th class="event-enabled">
|
||||
<label>
|
||||
<input type="checkbox"/>
|
||||
@T("Enabled")
|
||||
</label>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@{ var j = 0; }
|
||||
@foreach (var evnt in category.Events) {
|
||||
var checkboxId = String.Format("Event{0}{1}", i, j);
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="AuditTrailSettingsPart.Categories[@i].Events[@j].Event" value="@evnt.Event" />
|
||||
@evnt.Name
|
||||
</td>
|
||||
<td>@evnt.Description</td>
|
||||
<td>
|
||||
<input type="checkbox" id="@checkboxId" name="AuditTrailSettingsPart.Categories[@i].Events[@j].IsEnabled" value="@Boolean.TrueString" @if(evnt.IsEnabled || evnt.IsMandatory){<text>checked="checked"</text>} @if(evnt.IsMandatory){<text>disabled="disabled"</text>}/>
|
||||
</td>
|
||||
</tr>
|
||||
j++;
|
||||
}
|
||||
</table>
|
||||
</fieldset>
|
||||
i++;
|
||||
}
|
||||
</fieldset>
|
||||
</div>
|
||||
<section class="audittrail-settings-section">
|
||||
<h2>@T("Events to record in the audit trail")</h2>
|
||||
<table class="audittrail-events-table items">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="event-name">@T("Event")</th>
|
||||
<th>@T("Description")</th>
|
||||
<th class="audittrail-event-enabled-cell">
|
||||
<label>
|
||||
@T("Enabled")
|
||||
</label>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@{ var i = 0; }
|
||||
@foreach (var category in Model.Categories) {
|
||||
<tbody class="audittrail-category-body check-all-container">
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
@category.Name
|
||||
<input type="hidden" name="AuditTrailSettingsPart.Categories[@i].Category" value="@category.Category" />
|
||||
</th>
|
||||
<th class="audittrail-event-enabled-cell">
|
||||
<input type="checkbox" class="check-all-master" />
|
||||
</th>
|
||||
</tr>
|
||||
@{ var j = 0; }
|
||||
@foreach (var e in category.Events) {
|
||||
var checkboxId = String.Format("Event{0}{1}", i, j);
|
||||
<tr>
|
||||
<td>
|
||||
<input type="hidden" name="AuditTrailSettingsPart.Categories[@i].Events[@j].Event" value="@e.Event" />
|
||||
@e.Name
|
||||
</td>
|
||||
<td>@e.Description</td>
|
||||
<td class="audittrail-event-enabled-cell">
|
||||
<input id="@checkboxId" type="checkbox" class="check-all-slave" name="AuditTrailSettingsPart.Categories[@i].Events[@j].IsEnabled" value="@Boolean.TrueString" @if (e.IsEnabled || e.IsMandatory) { <text> checked="checked" </text> } @if (e.IsMandatory) { <text> disabled="disabled" </text> } />
|
||||
</td>
|
||||
</tr>
|
||||
j++;
|
||||
}
|
||||
</tbody>
|
||||
i++;
|
||||
}
|
||||
</table>
|
||||
</section>
|
||||
@@ -1,9 +1,7 @@
|
||||
@model Orchard.AuditTrail.ViewModels.AuditTrailTrimmingSettingsViewModel
|
||||
<fieldset>
|
||||
<legend>@T("Trimming Settings")</legend>
|
||||
<div id="audittrail-trimming-retentionperiod-setting">
|
||||
@Html.LabelFor(m => m.RetentionPeriod, T("Retention period"))
|
||||
@Html.TextBoxFor(m => m.RetentionPeriod, new { @class = "text small" })
|
||||
<span class="hint">@T("The number of days of audit log data to retain.")</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
<section class="audittrail-trimming-settings-section">
|
||||
<h2>@T("Trimming settings")</h2>
|
||||
@Html.LabelFor(m => m.RetentionPeriod, T("Retention period"))
|
||||
@Html.TextBoxFor(m => m.RetentionPeriod, new { @class = "text small" })
|
||||
<span class="hint">@T("The number of days of audit log data to retain.")</span>
|
||||
</section>
|
||||
@@ -3,7 +3,7 @@
|
||||
@{
|
||||
Script.Require("ShapesBase");
|
||||
Script.Include("~/Themes/TheAdmin/scripts/admin.js").AtFoot();
|
||||
Script.Include("audit-trail-admin.js").AtFoot();
|
||||
Script.Include("audittrail-admin.js").AtFoot();
|
||||
}
|
||||
@{
|
||||
var records = (IEnumerable<AuditTrailEventSummaryViewModel>)Model.Records;
|
||||
|
||||
Reference in New Issue
Block a user