public void Main(string[] args)
{
var siteCollectionUrl = "http://your_site_url";
var featureId = "379c069c-c650-451c-8887-aaaf91bf5df8";
using (var ctx = new ClientContext(siteCollectionUrl))
{
var web = ctx.Web;
// activate feature
ctx.Load(web);
ctx.Load(web.Features);
ctx.ExecuteQuery();
web.Features.Add(new Guid(featureId), false, FeatureDefinitionScope.Site); ;
ctx.ExecuteQuery();
}
}
2013/11/13
Active site feature
Group operation: create, grant permission and add member using client object model
public void Main(string[] args)
{
var siteCollectionUrl = "http://your_site_url";
var member = "domain\\account";
using (var ctx = new ClientContext(siteCollectionUrl))
{
var web = ctx.Web;
ctx.Load(web, w => w.ServerRelativeUrl);
ctx.ExecuteQuery();
// Create a new group named 'Contact'
var groupInfo = new GroupCreationInformation();
groupInfo.Title = "Contact";
groupInfo.Description = string.Format(@"Use this group to grant people full control permissions to the SharePoint site: {0}", groupInfo.Title);
var group = web.SiteGroups.Add(groupInfo);
ctx.Load(group);
ctx.ExecuteQuery();
// Set group properties
group.OnlyAllowMembersViewMembership = false;
group.AllowMembersEditMembership = true;
group.Update();
ctx.ExecuteQuery();
// Grant group permission
var fullControlPermission = web.RoleDefinitions.GetByName("Full Control");
var roleBinding = new RoleDefinitionBindingCollection(ctx);
roleBinding.Add(fullControlPermission);
web.RoleAssignments.Add(group, roleBinding);
ctx.ExecuteQuery();
// Add new member to group
var u = web.EnsureUser(member);
ctx.Load(u);
ctx.ExecuteQuery();
var userInfo = new UserCreationInformation();
userInfo.Email = u.Email;
userInfo.Title = u.Title;
userInfo.LoginName = u.LoginName;
group.Users.Add(userInfo);
ctx.ExecuteQuery();
}
}
Get file type icon path
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
var reportItem = properties.ListItem;
// icon
var icon = SPUtility.MapToIcon(properties.Web, reportItem["URL Path"].ToString(), "", IconSize.Size16);
var iconPath = string.Format("/_layouts/15/images/{0}", icon);
// do something
}
2013/11/03
Sublime Text hotkeys
| 編輯 | |
| Ctrl + X | 刪除行 |
| Ctrl + Enter | 插入下一行 |
| Ctrl + Shift + Enter | 插入前一行 |
| Ctrl + Shift + ↑ | 往上移動一行 |
| Ctrl + Shift + ↓ | 往下移動一行 |
| Ctrl + L | 選取整行 |
| Ctrl + D | 選取單字(可重複選取相同的) |
| Alt + F3 | 選取所有已選取的單字 |
| Ctrl + M | 跳到最近的括弧 |
| Ctrl + Shift + M | 選取括弧內的所有文字 |
| Ctrl + K + K | 刪除游標後方所有文字 |
| Ctrl + K + Backspace | 刪除游標前方所有文字 |
| Ctrl + ] | 向內縮排(通常使用Tab) |
| Ctrl + [ | 向外縮排(通常使用Shift + Tab) |
| Ctrl + Shift + D | 複製行 |
| Ctrl + J | 與下一行結合為同一行 |
| Ctrl + / | 註解與移除註解 |
| Ctrl + Shift + / | 區域註解 |
| Ctrl + Y | 回覆上一步,沒有上一步時重複上個動作 |
| Ctrl + Shift + V | 貼上並符合縮排 |
| Ctrl + U | 軟回覆(包括選取動作) |
| 導覽/Goto Anything | |
| Ctrl + P | 快速開啟檔案 |
| Ctrl + R | 快速到達符號(function, class, etc...) |
| Ctrl + G | 快速到達某一行 |
| Ctrl + ; | 快速到達變數 |
| 通用 | |
| Ctrl + Shift + P | 命令提示符(包含所有命令) |
| Ctrl + K + B | 切換側欄 |
| Ctrl + Shift + Alt + P | 切換狀態列 |
| 搜尋/取代 | |
| Ctrl + F | 搜尋 |
| Ctrl + H | 取代 |
| Ctrl + Shift + F | 檔案間搜尋 |
| 分頁 | |
| Ctrl + Shift + T | 還原最後關閉的分頁 |
| Ctrl + PgUp | 換到上一個分頁 |
| Ctrl + PgDown | 換到下一個分頁 |
| Ctrl + Tab | 切換上一個分頁 |
| Alt + [NUM] | 切換到第[NUM]個分頁 |
| 切割視窗 | |
| Alt + Shift + (2, 3, 4) | 垂直分割(2, 3, 4)個視窗 |
| Alt + Shift + 1 | 回覆到預設 |
| Alt + Shift + 5 | 水平垂直分割 |
| Alt + Shift + (8, 9) | 水平分割(2, 3)個視窗 |
| 書籤 | |
| Ctrl + F2 | 切換書籤 |
| F2 | 到下一個書籤 |
| Shift + F2 | 到上一個書籤 |
| Ctrl + Shift + F2 | 清除書籤 |
| 文字操作 | |
| Ctrl + K + U | 轉換為大寫 |
| Ctrl + K + L | 轉換為小寫 |