mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Refactoring Model concepts into ContentItem based concepts.
--HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4041350
This commit is contained in:
@@ -9,17 +9,17 @@ namespace Orchard.Core.Common.Models {
|
||||
public class CommonDriver : ModelDriver {
|
||||
private readonly IClock _clock;
|
||||
private readonly IAuthenticationService _authenticationService;
|
||||
private readonly IModelManager _modelManager;
|
||||
private readonly IContentManager _contentManager;
|
||||
|
||||
public CommonDriver(
|
||||
IRepository<CommonRecord> repository,
|
||||
IClock clock,
|
||||
IAuthenticationService authenticationService,
|
||||
IModelManager modelManager) {
|
||||
IContentManager contentManager) {
|
||||
|
||||
_clock = clock;
|
||||
_authenticationService = authenticationService;
|
||||
_modelManager = modelManager;
|
||||
_contentManager = contentManager;
|
||||
|
||||
AddOnCreating<CommonModel>(SetCreateTimesAndAuthor);
|
||||
Filters.Add(new StorageFilterForRecord<CommonRecord>(repository));
|
||||
@@ -42,7 +42,7 @@ namespace Orchard.Core.Common.Models {
|
||||
|
||||
void LoadOwnerModel(LoadModelContext context, CommonModel instance) {
|
||||
if (instance.Record.OwnerId != 0) {
|
||||
instance.Owner = _modelManager.Get(instance.Record.OwnerId).As<IUser>();
|
||||
instance.Owner = _contentManager.Get(instance.Record.OwnerId).As<IUser>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@ using Orchard.Models;
|
||||
using Orchard.Security;
|
||||
|
||||
namespace Orchard.Core.Common.Models {
|
||||
public class CommonModel : ModelPartWithRecord<CommonRecord> {
|
||||
public class CommonModel : ContentItemPartWithRecord<CommonRecord> {
|
||||
public IUser Owner { get; set; }
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
using Orchard.Models;
|
||||
|
||||
namespace Orchard.Core.Common.Models {
|
||||
public class ContentModel : ModelPart {
|
||||
public class ContentModel : ContentItemPart {
|
||||
public string Body { get; set; }
|
||||
public string Format { get; set; }
|
||||
}
|
||||
|
@@ -2,6 +2,6 @@ using Orchard.Core.Common.Records;
|
||||
using Orchard.Models;
|
||||
|
||||
namespace Orchard.Core.Common.Models {
|
||||
public class RoutableModel : ModelPartWithRecord<RoutableRecord> {
|
||||
public class RoutableModel : ContentItemPartWithRecord<RoutableRecord> {
|
||||
}
|
||||
}
|
@@ -2,7 +2,7 @@
|
||||
using Orchard.Models.Records;
|
||||
|
||||
namespace Orchard.Core.Common.Records {
|
||||
public class CommonRecord : ModelPartRecord {
|
||||
public class CommonRecord : ContentPartRecordBase {
|
||||
public virtual int OwnerId { get; set; }
|
||||
public virtual DateTime? CreatedUtc { get; set; }
|
||||
public virtual DateTime? ModifiedUtc { get; set; }
|
||||
|
@@ -1,7 +1,7 @@
|
||||
using Orchard.Models.Records;
|
||||
|
||||
namespace Orchard.Core.Common.Records {
|
||||
public class RoutableRecord : ModelPartRecord {
|
||||
public class RoutableRecord : ContentPartRecordBase {
|
||||
public virtual string Title { get; set; }
|
||||
public virtual string Slug { get; set; }
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@ using Orchard.Models;
|
||||
using Orchard.Settings;
|
||||
|
||||
namespace Orchard.Core.Settings.Models {
|
||||
public sealed class SiteModel : ModelPartWithRecord<SiteSettingsRecord>, ISite {
|
||||
public sealed class SiteModel : ContentItemPartWithRecord<SiteSettingsRecord>, ISite {
|
||||
public string SiteName {
|
||||
get { return Record.SiteName; }
|
||||
set { Record.SiteName = value; }
|
||||
|
@@ -1,7 +1,7 @@
|
||||
using Orchard.Models.Records;
|
||||
|
||||
namespace Orchard.Core.Settings.Records {
|
||||
public class SiteSettingsRecord : ModelPartRecord {
|
||||
public class SiteSettingsRecord : ContentPartRecordBase {
|
||||
public virtual string SiteUrl { get; set; }
|
||||
public virtual string SiteName { get; set; }
|
||||
public virtual string SuperUser { get; set; }
|
||||
|
@@ -9,11 +9,11 @@ using System.Web;
|
||||
namespace Orchard.Core.Settings.Services {
|
||||
public class SiteService : ISiteService {
|
||||
private readonly IRepository<SiteSettingsRecord> _siteSettingsRepository;
|
||||
private readonly IModelManager _modelManager;
|
||||
private readonly IContentManager _contentManager;
|
||||
|
||||
public SiteService(IRepository<SiteSettingsRecord> siteSettingsRepository, IModelManager modelManager) {
|
||||
public SiteService(IRepository<SiteSettingsRecord> siteSettingsRepository, IContentManager contentManager) {
|
||||
_siteSettingsRepository = siteSettingsRepository;
|
||||
_modelManager = modelManager;
|
||||
_contentManager = contentManager;
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
@@ -25,12 +25,12 @@ namespace Orchard.Core.Settings.Services {
|
||||
string applicationName = HttpContext.Current.Request.ApplicationPath;
|
||||
SiteSettingsRecord record = _siteSettingsRepository.Get(x => x.SiteUrl == applicationName);
|
||||
if (record == null) {
|
||||
SiteModel site = _modelManager.New("site").As<SiteModel>();
|
||||
SiteModel site = _contentManager.New("site").As<SiteModel>();
|
||||
site.Record.SiteUrl = applicationName;
|
||||
_modelManager.Create(site);
|
||||
_contentManager.Create(site);
|
||||
return site;
|
||||
}
|
||||
return _modelManager.Get(record.Id).As<ISite>();
|
||||
return _contentManager.Get(record.Id).As<ISite>();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using System.Linq;
|
||||
using Orchard.Data;
|
||||
using Orchard.Models;
|
||||
using Orchard.Models.Driver;
|
||||
using Orchard.Roles.Models.NoRecord;
|
||||
using Orchard.Roles.Records;
|
||||
@@ -28,21 +29,21 @@ namespace Orchard.Roles.Models {
|
||||
}
|
||||
|
||||
protected override void Creating(CreateModelContext context) {
|
||||
var userRoles = context.Instance.As<UserRolesModel>();
|
||||
var userRoles = context.ContentItem.As<UserRolesModel>();
|
||||
if (userRoles != null) {
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Loading(LoadModelContext context) {
|
||||
var userRoles = context.Instance.As<UserRolesModel>();
|
||||
var userRoles = context.ContentItem.As<UserRolesModel>();
|
||||
if (userRoles != null) {
|
||||
userRoles.Roles = _userRolesRepository.Fetch(x => x.UserId == userRoles.Id)
|
||||
userRoles.Roles = _userRolesRepository.Fetch(x => x.UserId == context.ContentItem.Id)
|
||||
.Select(x => x.Role.Name).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void GetEditors(GetModelEditorsContext context) {
|
||||
var userRoles = context.Instance.As<UserRolesModel>();
|
||||
var userRoles = context.ContentItem.As<UserRolesModel>();
|
||||
if (userRoles != null) {
|
||||
var roles =
|
||||
_roleService.GetRoles().Select(
|
||||
@@ -63,18 +64,18 @@ namespace Orchard.Roles.Models {
|
||||
}
|
||||
|
||||
protected override void UpdateEditors(UpdateModelContext context) {
|
||||
var userRoles = context.Instance.As<UserRolesModel>();
|
||||
var userRoles = context.ContentItem.As<UserRolesModel>();
|
||||
if (userRoles != null) {
|
||||
var viewModel = new UserRolesViewModel();
|
||||
if (context.Updater.TryUpdateModel(viewModel, "UserRoles", null, null)) {
|
||||
|
||||
var currentUserRoleRecords = _userRolesRepository.Fetch(x => x.UserId == userRoles.Id);
|
||||
var currentUserRoleRecords = _userRolesRepository.Fetch(x => x.UserId == context.ContentItem.Id);
|
||||
var currentRoleRecords = currentUserRoleRecords.Select(x => x.Role);
|
||||
var targetRoleRecords = viewModel.Roles.Where(x => x.Granted).Select(x => _roleService.GetRole(x.RoleId));
|
||||
|
||||
foreach (var addingRole in targetRoleRecords.Where(x => !currentRoleRecords.Contains(x))) {
|
||||
_notifier.Warning(string.Format("Adding role {0} to user {1}", addingRole.Name, userRoles.As<IUser>().UserName));
|
||||
_userRolesRepository.Create(new UserRolesRecord { UserId = userRoles.Id, Role = addingRole });
|
||||
_userRolesRepository.Create(new UserRolesRecord { UserId = context.ContentItem.Id, Role = addingRole });
|
||||
}
|
||||
|
||||
foreach (var removingRole in currentUserRoleRecords.Where(x => !targetRoleRecords.Contains(x.Role))) {
|
||||
|
@@ -2,11 +2,11 @@ using System.Collections.Generic;
|
||||
using Orchard.Models;
|
||||
|
||||
namespace Orchard.Roles.Models.NoRecord {
|
||||
public interface IUserRoles : IModel {
|
||||
public interface IUserRoles : IContentItemPart {
|
||||
IList<string> Roles { get; }
|
||||
}
|
||||
|
||||
public class UserRolesModel : ModelPart, IUserRoles {
|
||||
public class UserRolesModel : ContentItemPart, IUserRoles {
|
||||
public UserRolesModel() {
|
||||
Roles = new List<string>();
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Orchard.Logging;
|
||||
using Orchard.Models;
|
||||
using Orchard.Roles.Models.NoRecord;
|
||||
using Orchard.Roles.Records;
|
||||
using Orchard.Security;
|
||||
|
@@ -14,17 +14,17 @@ namespace Orchard.Users.Controllers {
|
||||
|
||||
public class AdminController : Controller, IModelUpdater {
|
||||
private readonly IMembershipService _membershipService;
|
||||
private readonly IModelManager _modelManager;
|
||||
private readonly IContentManager _contentManager;
|
||||
private readonly IRepository<UserRecord> _userRepository;
|
||||
private readonly INotifier _notifier;
|
||||
|
||||
public AdminController(
|
||||
IMembershipService membershipService,
|
||||
IModelManager modelManager,
|
||||
IContentManager contentManager,
|
||||
IRepository<UserRecord> userRepository,
|
||||
INotifier notifier) {
|
||||
_membershipService = membershipService;
|
||||
_modelManager = modelManager;
|
||||
_contentManager = contentManager;
|
||||
_userRepository = userRepository;
|
||||
_notifier = notifier;
|
||||
T = NullLocalizer.Instance;
|
||||
@@ -38,7 +38,7 @@ namespace Orchard.Users.Controllers {
|
||||
var model = new UsersIndexViewModel();
|
||||
model.Rows = _userRepository.Fetch(x => x.UserName != null)
|
||||
.Select(x => new UsersIndexViewModel.Row {
|
||||
User = _modelManager.Get(x.Id).As<UserModel>()
|
||||
User = _contentManager.Get(x.Id).As<UserModel>()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
@@ -67,15 +67,15 @@ namespace Orchard.Users.Controllers {
|
||||
}
|
||||
|
||||
public ActionResult Edit(int id) {
|
||||
var model = new UserEditViewModel { User = _modelManager.Get(id) };
|
||||
model.Editors = _modelManager.GetEditors(model.User);
|
||||
var model = new UserEditViewModel { User = _contentManager.Get<UserModel>(id) };
|
||||
model.Editors = _contentManager.GetEditors(model.User.ContentItem);
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public ActionResult Edit(int id, FormCollection input) {
|
||||
var model = new UserEditViewModel { User = _modelManager.Get(id) };
|
||||
model.Editors = _modelManager.UpdateEditors(model.User, this);
|
||||
var model = new UserEditViewModel { User = _contentManager.Get<UserModel>(id) };
|
||||
model.Editors = _contentManager.UpdateEditors(model.User.ContentItem, this);
|
||||
|
||||
if (!TryUpdateModel(model, input.ToValueProvider())) {
|
||||
return View(model);
|
||||
|
@@ -2,8 +2,19 @@
|
||||
using Orchard.Security;
|
||||
|
||||
namespace Orchard.Users.Models {
|
||||
public sealed class UserModel : ModelPartWithRecord<UserRecord>, IUser {
|
||||
string IUser.UserName {get { return Record.UserName; }}
|
||||
string IUser.Email {get { return Record.Email; }}
|
||||
public sealed class UserModel : ContentItemPartWithRecord<UserRecord>, IUser {
|
||||
public int Id {
|
||||
get { return ContentItem.Id; }
|
||||
}
|
||||
|
||||
public string UserName {
|
||||
get { return Record.UserName; }
|
||||
set { Record.UserName = value; }
|
||||
}
|
||||
|
||||
public string Email {
|
||||
get { return Record.Email; }
|
||||
set { Record.Email = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@ using System.Web.Security;
|
||||
using Orchard.Models.Records;
|
||||
|
||||
namespace Orchard.Users.Models {
|
||||
public class UserRecord : ModelPartRecord {
|
||||
public class UserRecord : ContentPartRecordBase {
|
||||
public virtual string UserName { get; set; }
|
||||
public virtual string Email { get; set; }
|
||||
|
||||
|
@@ -11,11 +11,11 @@ using Orchard.Users.Models;
|
||||
|
||||
namespace Orchard.Users.Services {
|
||||
public class MembershipService : IMembershipService {
|
||||
private readonly IModelManager _modelManager;
|
||||
private readonly IContentManager _contentManager;
|
||||
private readonly IRepository<UserRecord> _userRepository;
|
||||
|
||||
public MembershipService(IModelManager modelManager, IRepository<UserRecord> userRepository) {
|
||||
_modelManager = modelManager;
|
||||
public MembershipService(IContentManager contentManager, IRepository<UserRecord> userRepository) {
|
||||
_contentManager = contentManager;
|
||||
_userRepository = userRepository;
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
@@ -36,9 +36,9 @@ namespace Orchard.Users.Services {
|
||||
};
|
||||
SetPassword(record, createUserParams.Password);
|
||||
|
||||
var user = _modelManager.New("user");
|
||||
var user = _contentManager.New("user");
|
||||
user.As<UserModel>().Record = record;
|
||||
_modelManager.Create(user);
|
||||
_contentManager.Create(user);
|
||||
return user.As<IUser>();
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace Orchard.Users.Services {
|
||||
if (userRecord == null) {
|
||||
return null;
|
||||
}
|
||||
return _modelManager.Get(userRecord.Id).As<IUser>();
|
||||
return _contentManager.Get(userRecord.Id).As<IUser>();
|
||||
}
|
||||
|
||||
public IUser ValidateUser(string username, string password) {
|
||||
@@ -55,7 +55,7 @@ namespace Orchard.Users.Services {
|
||||
if (userRecord == null || ValidatePassword(userRecord, password) == false)
|
||||
return null;
|
||||
|
||||
return _modelManager.Get(userRecord.Id).As<IUser>();
|
||||
return _contentManager.Get(userRecord.Id).As<IUser>();
|
||||
}
|
||||
|
||||
|
||||
|
@@ -8,7 +8,7 @@ using Orchard.Users.Models;
|
||||
|
||||
namespace Orchard.Users.ViewModels {
|
||||
public class UserEditViewModel : AdminViewModel {
|
||||
public IModel User { get; set; }
|
||||
public UserModel User { get; set; }
|
||||
public IEnumerable<ModelTemplate> Editors { get; set; }
|
||||
|
||||
[HiddenInput(DisplayValue = false)]
|
||||
|
@@ -6,10 +6,10 @@ using Orchard.Security;
|
||||
|
||||
namespace Orchard.Wikis.Controllers {
|
||||
public class AdminController : Controller {
|
||||
private readonly IModelManager _modelManager;
|
||||
private readonly IContentManager _contentManager;
|
||||
|
||||
public AdminController(IModelManager modelManager) {
|
||||
_modelManager = modelManager;
|
||||
public AdminController(IContentManager contentManager) {
|
||||
_contentManager = contentManager;
|
||||
}
|
||||
|
||||
public ActionResult Index() {
|
||||
@@ -19,14 +19,14 @@ namespace Orchard.Wikis.Controllers {
|
||||
public IUser CurrentUser { get; set; }
|
||||
|
||||
public ActionResult Create() {
|
||||
var page = _modelManager.New("wikipage");
|
||||
_modelManager.Create(page);
|
||||
var page = _contentManager.New("wikipage");
|
||||
_contentManager.Create(page);
|
||||
|
||||
return RedirectToAction("View", new{page.Id});
|
||||
}
|
||||
|
||||
public ActionResult View(int id) {
|
||||
var page = _modelManager.Get(id).As<CommonModel>();
|
||||
var page = _contentManager.Get(id).As<CommonModel>();
|
||||
return View(page);
|
||||
}
|
||||
}
|
||||
|
@@ -6,10 +6,10 @@ using Orchard.Models.Records;
|
||||
using Orchard.UI.Models;
|
||||
|
||||
namespace Orchard.Wikis.Models {
|
||||
public class WikiSettings : ModelPartWithRecord<WikiSettingsRecord> {
|
||||
public class WikiSettings : ContentItemPartWithRecord<WikiSettingsRecord> {
|
||||
}
|
||||
|
||||
public class WikiSettingsRecord : ModelPartRecord {
|
||||
public class WikiSettingsRecord : ContentPartRecordBase {
|
||||
public virtual bool AllowAnonymousEdits { get; set; }
|
||||
|
||||
[Required]
|
||||
@@ -26,7 +26,7 @@ namespace Orchard.Wikis.Models {
|
||||
}
|
||||
|
||||
protected override void GetEditors(GetModelEditorsContext context) {
|
||||
var model = context.Instance.As<WikiSettings>();
|
||||
var model = context.ContentItem.As<WikiSettings>();
|
||||
if (model == null)
|
||||
return;
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Orchard.Wikis.Models {
|
||||
}
|
||||
|
||||
protected override void UpdateEditors(UpdateModelContext context) {
|
||||
var model = context.Instance.As<WikiSettings>();
|
||||
var model = context.ContentItem.As<WikiSettings>();
|
||||
if (model == null)
|
||||
return;
|
||||
|
||||
|
Reference in New Issue
Block a user