我有一个需求,在我的SharePoint站点我想根据用户设置主题。用户特定的主题在sharepoint
例如,如果用户将他的主题设置为主题1并且用户b登录并将主题设置为主题2。所以下次用户登录时,他必须看到他设定的主题。 I.e主题a。
任何人都可以告诉我什么是最好的做法。
在此先感谢。
萨钦
我有一个需求,在我的SharePoint站点我想根据用户设置主题。用户特定的主题在sharepoint
例如,如果用户将他的主题设置为主题1并且用户b登录并将主题设置为主题2。所以下次用户登录时,他必须看到他设定的主题。 I.e主题a。
任何人都可以告诉我什么是最好的做法。
在此先感谢。
萨钦
我也有类似的要求一次。在我的情况下,他们希望用户能够更改MOSS门户的“颜色布局”(因此布局和字体相同,但每个主题的背景颜色和图像颜色都不相同)。我创建了一个“基本主题”,其中包含完整的布局(提供的主题之一)作为单个CSS文件。然后,我创建了其他主题,例如“blue.css”,“red.css”,“green.css”等,并将所有这些文件放入portal/ourthemes/
。
我们希望用户能够选择他们的主题,因此我们创建了一个新的用户配置文件属性“CurrentTheme”(Sharepoint管理中心 - >共享服务 - >用户配置文件和属性 - >添加配置文件属性)作为具有预定义选项列表的字符串。
然后我创建了渲染为
一个简单的ASP.Net控制Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim oProf As Microsoft.Office.Server.UserProfiles.UserProfile = Microsoft.Office.Server.UserProfiles.ProfileLoader.GetProfileLoader.GetUserProfile()
Dim UserTheme As String
Try
If oProf.Item("CurrentTheme") IsNot Nothing Then
UserTheme = oProf.Item("CurrentTheme").Value.ToString()
Else
UserTheme = "blue"
End If
Catch ex As Exception
'shouldn't fail if we don't know the value
UserTheme = "blue" 'a default value for users who dont have a theme yet
End Try
writer.WriteLine("<link rel='stylesheet' type='text/css' href='/portal/ourthemess" & Trim(UserTheme) & ".css' />")
End Sub
(免责声明:实际的代码有点长,因为我们使用的每个用户的缓存,以避免每次UserProfile
读取属性用户加载页面)
然后我把这个控件放在为该门户创建的母版页中。
编辑:要做缓存,我们创建了一个缓存键,其中包含用户名并将生成的文本存储在那里。结果是这样的:
Dim KeyName As String = Page.User.Identity.Name & "_CurrentTheme"
If (Not Me.Page.Cache.Item(KeyName) Is Nothing) Then
writer.Write(Page.Cache.Item(KeyName).ToString)
Else
'...code posted previously goes in here
'at the end
Me.Page.Cache.Add(KeyName, _
AllContentRenderedInPreviousCodeAsString, _
Nothing, _
Caching.Cache.NoAbsoluteExpiration, _
Caching.Cache.NoSlidingExpiration, _
Caching.CacheItemPriority.Low, Nothing)
End If
嗨naivists 感谢您的快速回复。 如果你能给我完整的源代码,那将是非常棒的。这样我就可以清楚地了解每个用户的缓存。 – Sachin 2010-01-28 10:04:11
添加了一些代码来显示它是如何实现的。是的,另一件事是我们实际上创建了一个Web部件,用户可以选择主题(从预览屏幕截图中选择)。然后,webpart将设置UserProfile属性并清除缓存值。 – naivists 2010-01-28 11:46:47
嗨naivists ...感谢您的帮助。这将定义要帮助我很多.. – Sachin 2010-01-28 12:42:50