我记录综合系统学习研究之用户管理四(用户空间)
2013-01-13 23:12
501 查看
在用户列表中选择一个用户进入用户空间去看一看
可以看到空间有这样几个菜单。这些是在哪里来的呢。
答案是注册用户的时候。
public void SaveReg() {
addUserAppAndMenus
}
保存注册里有一句addUserAppAndMenus,该方法在UserMenu数据库表中,保存了每个菜单对应的url,也即相应的Controller action。
appid http://www.wojilu.com/space/xchsp/Blog2402/Blog/Index
appid = 2042,每新增一个用户appid加1.
我们分析一下这里比较有趣的主页菜单实现。
可以看到主页部分是由很多块组成的。都有哪些块呢
我们看一下Content1/Content/Index,也就是ContentController的Index action
Index action->IndexPage()->bindRows( app, sections );最终调用到
private void bindSectionList( IBlock sectionBlock, IList sections ) {
foreach (ContentSection section in sections) {
sectionBlock.Set( "section.Id", section.Id );
String content = getSectionContent( section );
sectionBlock.Set( "section.Content", content );
sectionBlock.Next();
}
}
getSectionContent最终调用到getAutoData
private String getAutoData( ContentSection section ) {
Dictionary<string, string> presult = getDefaultValue( section );
IList data = ServiceContext.GetData( section.ServiceId, section.GetServiceParamValues(), presult );
if (section.TemplateId <= 0) return getJsonResult( section, data );
ContentSectionTemplate sectionTemplate = TplService.GetById( section.TemplateId );
Template currentView = utils.getTemplateByFileName( BinderUtils.GetBinderTemplatePath( sectionTemplate ) );
ISectionBinder binder = BinderUtils.GetBinder( sectionTemplate, ctx, currentView );
binder.Bind( section, data ); // custom template : SectionUtil.loadTemplate
ControllerBase sectionController = binder as ControllerBase;
return sectionController.utils.getActionResult();
}
ContentSectionTemplate sectionTemplate = TplService.GetById( section.TemplateId );
Template currentView = utils.getTemplateByFileName( BinderUtils.GetBinderTemplatePath( sectionTemplate ) );
这2句就是在获取主页里的一个个动态显示块。我们调查一下section.TemplateId
ContentSection数据库表中记录着TemplateId
上面的TemplateId对应着哪些模板视图呢,秘密在于
\wojilu1.8\wojilu.Web\framework\data\wojilu.Apps.Content.Domain.ContentSectionTemplate.config
[
{Id:10, OrderId:0, Name:"我的信息", TemplateName:"MyInfo", ThumbUrl:"", Description:"" },
{Id:11, OrderId:0, Name:"我的最新分享", TemplateName:"MyShare", ThumbUrl:"", Description:"" },
{Id:12, OrderId:0, Name:"我的最新动态", TemplateName:"MyFeed", ThumbUrl:"", Description:"" },
{Id:13, OrderId:0, Name:"头像列表", TemplateName:"UserFaces", ThumbUrl:"", Description:"" },
{Id:14, OrderId:0, Name:"我的头像", TemplateName:"MyFace", ThumbUrl:"", Description:"" },
{Id:15, OrderId:0, Name:"我的迷你博客", TemplateName:"MyMicroblog", ThumbUrl:"", Description:"" },
{Id:16, OrderId:0, Name:"我的留言", TemplateName:"MyFeedback", ThumbUrl:"", Description:"" },
{Id:17, OrderId:0, Name:"我的博客", TemplateName:"MyBlog", ThumbUrl:"", Description:"" },
{Id:18, OrderId:0, Name:"用户登录", TemplateName:"Login", ThumbUrl:"", Description:"" },
{Id:19, OrderId:0, Name:"简单列表(带时间)", TemplateName:"ListTime", ThumbUrl:"", Description:"" },
{Id:20, OrderId:0, Name:"文章排行", TemplateName:"Rank", ThumbUrl:"", Description:"" },
{Id:21, OrderId:0, Name:"头条要闻", TemplateName:"Focus", ThumbUrl:"", Description:"" }
]
对应的controller在
ContentSection数据库里的记录是在何时增加的呢?
addUserAppAndMenus->new UserHomeInstaller().Install->createPortal
createPortal
createLayout()
还有一处解释一下,section.ServiceId
IList data = ServiceContext.GetData( section.ServiceId, section.GetServiceParamValues(), presult );
位于wojilu1.8\wojilu.Web\framework\data\wojilu.SOA.Service.config
[
{ Id:10, Name:"我的最新图片", Type:"wojilu.Apps.Photo.Service.PhotoPostService", Method:"GetMyNew", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"Img", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:11, Name:"我的博客", Type:"wojilu.Apps.Blog.Service.BlogPostService", Method:"GetMyRecent", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"List;List2;MyBlog", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:12, Name:"我的头像", Type:"wojilu.Members.Users.Service.UserService", Method:"GetCurrent", Params:"", Tags:"PageSection", Note:"MyFace", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:13, Name:"我的微博", Type:"wojilu.Common.Microblogs.Service.MicroblogService", Method:"GetCurrent", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"MyMicroblog", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:14, Name:"我的留言", Type:"wojilu.Common.Msg.Service.FeedbackService", Method:"GetRecent", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"MyFeedback", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:15, Name:"群组:最新群组帖子", Type:"wojilu.Apps.Forum.Service.ForumTopicService", Method:"GetNewGroupTopic", Params:"显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
{ Id:16, Name:"论坛:最新帖子", Type:"wojilu.Apps.Forum.Service.ForumPostService", Method:"GetNewSitePost", Params:"显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
{ Id:17, Name:"论坛:特定论坛帖子", Type:"wojilu.Apps.Forum.Service.ForumPostService", Method:"GetNewBoardPost", Params:"板块ID(多个Id之间用逗号分隔)=StringTextbox;显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:18, Name:"Rss新闻源", Type:"wojilu.Apps.Reader.Service.FeedSourceService", Method:"GetFeed", Params:"rss网址=StringTextbox;显示数量=IntTextbox", Tags:"PageSection", Note:"List", Status:1, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:19, Name:"用户:用户登录", Type:"wojilu.Members.Users.Service.LoginService", Method:"GetLoginInfo", Params:"", Tags:"PageSection", Note:"Login", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
{ Id:20, Name:"cms:指定区块的文章", Type:"wojilu.Apps.Content.Service.ContentPostService", Method:"GetBySectionIds", Params:"区块Id(多个Id之间用逗号分隔)=StringTextbox;显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
]
这里也可以参考这篇帖子http://www.wojilu.com/Common/Page/57
可以看到空间有这样几个菜单。这些是在哪里来的呢。
答案是注册用户的时候。
public void SaveReg() {
addUserAppAndMenus
}
保存注册里有一句addUserAppAndMenus,该方法在UserMenu数据库表中,保存了每个菜单对应的url,也即相应的Controller action。
appid http://www.wojilu.com/space/xchsp/Blog2402/Blog/Index
appid = 2042,每新增一个用户appid加1.
我们分析一下这里比较有趣的主页菜单实现。
可以看到主页部分是由很多块组成的。都有哪些块呢
我们看一下Content1/Content/Index,也就是ContentController的Index action
Index action->IndexPage()->bindRows( app, sections );最终调用到
private void bindSectionList( IBlock sectionBlock, IList sections ) {
foreach (ContentSection section in sections) {
sectionBlock.Set( "section.Id", section.Id );
String content = getSectionContent( section );
sectionBlock.Set( "section.Content", content );
sectionBlock.Next();
}
}
getSectionContent最终调用到getAutoData
private String getAutoData( ContentSection section ) {
Dictionary<string, string> presult = getDefaultValue( section );
IList data = ServiceContext.GetData( section.ServiceId, section.GetServiceParamValues(), presult );
if (section.TemplateId <= 0) return getJsonResult( section, data );
ContentSectionTemplate sectionTemplate = TplService.GetById( section.TemplateId );
Template currentView = utils.getTemplateByFileName( BinderUtils.GetBinderTemplatePath( sectionTemplate ) );
ISectionBinder binder = BinderUtils.GetBinder( sectionTemplate, ctx, currentView );
binder.Bind( section, data ); // custom template : SectionUtil.loadTemplate
ControllerBase sectionController = binder as ControllerBase;
return sectionController.utils.getActionResult();
}
ContentSectionTemplate sectionTemplate = TplService.GetById( section.TemplateId );
Template currentView = utils.getTemplateByFileName( BinderUtils.GetBinderTemplatePath( sectionTemplate ) );
这2句就是在获取主页里的一个个动态显示块。我们调查一下section.TemplateId
ContentSection数据库表中记录着TemplateId
上面的TemplateId对应着哪些模板视图呢,秘密在于
\wojilu1.8\wojilu.Web\framework\data\wojilu.Apps.Content.Domain.ContentSectionTemplate.config
[
{Id:10, OrderId:0, Name:"我的信息", TemplateName:"MyInfo", ThumbUrl:"", Description:"" },
{Id:11, OrderId:0, Name:"我的最新分享", TemplateName:"MyShare", ThumbUrl:"", Description:"" },
{Id:12, OrderId:0, Name:"我的最新动态", TemplateName:"MyFeed", ThumbUrl:"", Description:"" },
{Id:13, OrderId:0, Name:"头像列表", TemplateName:"UserFaces", ThumbUrl:"", Description:"" },
{Id:14, OrderId:0, Name:"我的头像", TemplateName:"MyFace", ThumbUrl:"", Description:"" },
{Id:15, OrderId:0, Name:"我的迷你博客", TemplateName:"MyMicroblog", ThumbUrl:"", Description:"" },
{Id:16, OrderId:0, Name:"我的留言", TemplateName:"MyFeedback", ThumbUrl:"", Description:"" },
{Id:17, OrderId:0, Name:"我的博客", TemplateName:"MyBlog", ThumbUrl:"", Description:"" },
{Id:18, OrderId:0, Name:"用户登录", TemplateName:"Login", ThumbUrl:"", Description:"" },
{Id:19, OrderId:0, Name:"简单列表(带时间)", TemplateName:"ListTime", ThumbUrl:"", Description:"" },
{Id:20, OrderId:0, Name:"文章排行", TemplateName:"Rank", ThumbUrl:"", Description:"" },
{Id:21, OrderId:0, Name:"头条要闻", TemplateName:"Focus", ThumbUrl:"", Description:"" }
]
对应的controller在
ContentSection数据库里的记录是在何时增加的呢?
addUserAppAndMenus->new UserHomeInstaller().Install->createPortal
createPortal
createLayout()
还有一处解释一下,section.ServiceId
IList data = ServiceContext.GetData( section.ServiceId, section.GetServiceParamValues(), presult );
位于wojilu1.8\wojilu.Web\framework\data\wojilu.SOA.Service.config
[
{ Id:10, Name:"我的最新图片", Type:"wojilu.Apps.Photo.Service.PhotoPostService", Method:"GetMyNew", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"Img", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:11, Name:"我的博客", Type:"wojilu.Apps.Blog.Service.BlogPostService", Method:"GetMyRecent", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"List;List2;MyBlog", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:12, Name:"我的头像", Type:"wojilu.Members.Users.Service.UserService", Method:"GetCurrent", Params:"", Tags:"PageSection", Note:"MyFace", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:13, Name:"我的微博", Type:"wojilu.Common.Microblogs.Service.MicroblogService", Method:"GetCurrent", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"MyMicroblog", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:14, Name:"我的留言", Type:"wojilu.Common.Msg.Service.FeedbackService", Method:"GetRecent", Params:"显示数量=IntTextbox", ParamsDefault:"ownerId=int", Tags:"PageSection", Note:"MyFeedback", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:15, Name:"群组:最新群组帖子", Type:"wojilu.Apps.Forum.Service.ForumTopicService", Method:"GetNewGroupTopic", Params:"显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
{ Id:16, Name:"论坛:最新帖子", Type:"wojilu.Apps.Forum.Service.ForumPostService", Method:"GetNewSitePost", Params:"显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
{ Id:17, Name:"论坛:特定论坛帖子", Type:"wojilu.Apps.Forum.Service.ForumPostService", Method:"GetNewBoardPost", Params:"板块ID(多个Id之间用逗号分隔)=StringTextbox;显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:18, Name:"Rss新闻源", Type:"wojilu.Apps.Reader.Service.FeedSourceService", Method:"GetFeed", Params:"rss网址=StringTextbox;显示数量=IntTextbox", Tags:"PageSection", Note:"List", Status:1, Description:"", Owner:"wojilu.Members.Users.Domain.User" },
{ Id:19, Name:"用户:用户登录", Type:"wojilu.Members.Users.Service.LoginService", Method:"GetLoginInfo", Params:"", Tags:"PageSection", Note:"Login", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
{ Id:20, Name:"cms:指定区块的文章", Type:"wojilu.Apps.Content.Service.ContentPostService", Method:"GetBySectionIds", Params:"区块Id(多个Id之间用逗号分隔)=StringTextbox;显示数量=IntTextbox", Tags:"PageSection", Note:"List;List2", Status:0, Description:"", Owner:"wojilu.Members.Sites.Domain.Site" },
]
这里也可以参考这篇帖子http://www.wojilu.com/Common/Page/57
相关文章推荐
- 我记录综合系统学习研究之用户管理一(wojilu.Web.Controller.Users MainController)
- 我记录综合系统学习研究之用户管理二(wojilu.Web.Controller.Users MainController)
- 我记录综合系统学习研究之用户管理五(如何利用wojilu打造一个全新的SNS应用)
- 我记录综合系统学习研究之用户管理三(wojilu.Web.Controller.Layouts SiteLayoutController)
- 我记录综合系统学习研究之开篇
- 银行管理系统 实现用户注册 登录 存、取款 交易记录查询和修改用户信息等功能
- 用户创建,删除and并发注册and系统登陆的API研究(学习汇总网上资料)
- JSP+Servlet培训班作业管理系统[4]-记录登录用户信息
- 客户关系管理系统11(用户拜访客户记录)
- Fuse用户空间文件系统安装学习笔记(ver2.7.3 red hat)
- 电影记录管理系统7[用户级别]
- WebService:跟孔浩学习(契约优先、Schema、WSDL、SOAP、用户管理小系统)
- <Linux 私房菜>基础学习篇学习记录(2)磁盘与文件系统管理
- C#简易电影记录管理系统:开发七[用户分类]
- 电影记录管理系统5[用户注册]
- linux系统管理学习笔记之四---用户管理
- 研究下 ClearCase用户管理之自力更生篇。特记录
- 开发记录_小型自选商场综合管理系统
- 【项目记录】山东大学场馆管理系统之——用户部分
- linux学习入门 基础部分(5)[用户理解 用户涉及到的系统配置文件 用户管理《建立,删除,查看,更改》 权力下放 忘记密码。