Orokana Pekoponjin

SharePoint 2010 Branding 十訣

CSS, Design, SharePoint

最近突然接到一個消息:我們部門將為另外一個處(division)開設一系列的SharePoint Sharing課程(有點拗口)。而我負責的兩個主題其中一個是關於UI Design & Branding,於是便寫了這篇文節錄一些我比較有心得的部分。


SharePoint 2010這東西,是大約去年的五月,我被徵召當UI救火隊時候開始碰的。說實在的,在這之前對於微軟的企業端solution、CMS、還有ASP.NET都完全沒有任何的接觸;不過也是因為這個task,我才算真正進入CSS以及jQuery的大門(算是一個蠻神奇的進入點orz)。


首先簡介一下我們系統。它本身是跨公司內外的網站,但並不是一個內容取向的網站;而是主要由一個個partner-collaboration性質的AP(在這邊當然是web part形式)所構成 --看起來純粹是因為政治及某些人的KPI等等不關我事的因素而採用此solution。先說說我負責的範圍:


  1. 整體UI設計及Branding:意思就是把它變成完全不像SharePoint,並且可以讓客戶留下好印象、每個畫面截圖都可以拿來發press release的站。
  2. 首頁中所有功能:跟user談了首頁layout、carousel(圖文輪播)、登入框、還有額外的佈告系統。
  3. 實作其中一個AP:使用ASP.NET加上DevExpress套件的報表/圖表系統。


而今天要講的就是看似最簡單,但實際上最難上手的UI這部分。當時是處於前一個assignee開天窗,進度正火燒屁股的狀態。首先,我們整個UI救火團隊一共有3人:我老闆(負責coordinate)、我(萬用programmer)、還有從其他部門借調來part-time support的美工(也是剛工作不久的)。以下是我們大略的工作流程(沒錯幾乎就是waterfall,或是你可以叫他always-sprint的一人scrum):


  • Identify stakeholder(老闆)、Skill pickup (我,持續進行貫串全文)
  • Benchmarking:survey所有類似特性的網站 (我) 並拿出來討論(三人)
  • 談需求(三人、user),設計wireframe(我、美)
  • 設計多個design comps ( 純圖片的整體設計稿)(美)
  • User決定後,做出切好的HTML單一網頁及CSS (美)
  • 開始沒日沒夜的master page實作及fine-tune  (我)
  • 開始製作首頁功能(我)

    主體大致OK後,開始AP端部分的工作(extremely lousy)
  • 制定AP的UI/Glossary Guideline及audit機制 (三人、AP團隊)
  • DevExpress的CSS overriding (我、美)
  • fine-tune再 fine-tune(我)

    接下來是最後
  • 整合之後的master page再美化:如頁面對齊、stretching、footer等JS功能(我)
  • Deployment(我)

其中,skill pickup無疑是最重要的部分。至少需要指派一個人來對整個架構流程進行全盤的瞭解:對於各種需求,必須知道哪些可以使用OOTB (out of the box,指原本package就有提供的功能)、哪些是需要自己慢慢刻、要如何刻等等;在真正開發過程中也須由他來扮演SD lead以及其他team的consult對象。在此我先來推一本我當初唯一的參考書:

書名:Professional SharePoint 2010 Branding and User Interface Design
作者:Randy Drisgill等
出版商:Wrox

(P.S. 這本書看著看著會很想吃鬆餅XD)


說十訣什麼的其實有點自以為是,不過以下這些都是綜合許多專家還有我的經驗整理出來的一些小tip,希望能減輕生master page時的痛苦。


Tip #1:導覽列(Navigation)

在SharePoint2007時代,上方的navigation是以巢狀表格方式render;到了2010,預設是使用<ul><li>的形式(UseSimpleRendering=true情況下)。這使得CSS的撰寫簡單了許多。


Tip #2:彈出式選單

在master page可以用MaximumDynamicDisplayLevels定義最大的彈出層數。在每個sharepoint的site裡面可以個別設定navigation的形式,另外也有許多內建的sitemap可以選擇。在我們user的需求中,他們不使用彈出的形式;而是希望將所有子節點已樹狀形式攤平顯示,而這只要override少許CSS就可以搞定。


Tip #3:不要再去發明輪子

可以使用微軟或許多前輩提供的starter master page開始做branding。裡面有非常詳盡的註解,可以讓你了解每個區段到你是做啥用的。

  • Microsoft’s Starter master page:  https://code.msdn.microsoft.com/odcSP14StarterMaster. This Starter master page was built for SharePoint  Foundation 2010,  SharePoint Server 2010
  • Randy Drisgill’s Starter master pages:  (https://startermasterpages.codeplex.com) 
  • Heather’s Base Master Page: https://www.heathersolomon.com/downloads/heathersbasemasterpage.zip

Tip #4:不要亂砍master page的區段

就算是不需要用的元件,也不要貿然將它直接砍掉,否則可能會造成整個站壞掉的悲劇(還是有辦法復原就是了)。可以將用不到的區段移到下圖的<asp:Panel runat=“server” visible=“false”>區塊裡面。


Tip #5:Page Layouts

如果你用的是publishing site(我們只在布告欄功能有用到),記得設定一個預設的layout,並注意是否有設好可用layout清單

Tip #6:參考欄位

很多東西可以用server-side control來減少maintain的effort。


Tip #7:Web Part設計

儘量不要使用圓角設計
確定它們可以隨視窗放大縮小(這一句很短,但是可以想像工程非常大)


Tip #8:置中、延展

剛把master page做個雛型出來後雖然小有成就感,但是離好看可能還有一大段距離。其中最麻煩的就是每個頁面、每個user的螢幕大小都不一樣。
這是OOTB的置中方式:

這是我在master page加上的script,目的是讓所有頁面、所有大小的螢幕上的footer都保持在最下面(僅供參考,裡面許多id是我的自己的DOM裡面定義的)

Tip #9:設成預設master page

打勾的話, 此站台以下的所有子站master page都會被覆蓋為P.master。
注意到上圖的設定畫面並沒有套上我們設計的master page嗎?如果不想為了_layouts裡面一堆內建功能在另外設計一個master page的話,記得去站台設定將Master Page Setting for Application _Layouts Pages選項選No。

Tip #10:部署

因為我們的網站是一個大規模的對外站台,所有webpart程式碼都必須進SVN。上production時,deployment manager將根據deployment plan從SVN包裝wsp檔,透過指令上production。而我們的東西當然也不例外(想像一下,如果在上production時候,必須identify所有有改動的程式碼,然後用SharePoint Designer開啟UAT的站台,再將對應程式碼copy-paste到production,版本控管則由內建的document library機制紀錄之,這是何等的腦殘)。
SharePoint Designer內部的所有東西也可以透過在Visual Studio的SharePoint Project形式包成wsp檔,在deploy時候會自動寫入對應資料夾。(要注意的是_layout裡面的資料無法使用此種方式部署,必須另尋它法)



小結:雖然這個task距離我已經快要一年之遠,對於很多細節的印象跟許多數不清的怨言都已經開始模糊了,不過這整個過程對我來說算是相當寶貴且難忘的:我頭一次有了與美工cowork的機會,另外也讓我體會到enterprise端的龐大商機還有微軟對於這個市場所投注的心力。(附帶一提,我們部門有聘請微軟的consultant每周一天固定on-site support了大約半年之久,其一天的費用大約NT$30,000) =q= 



Comments