Friday, May 27, 2016

Adding new item with plus in circle using Content Editor webpart

Adding new item with hyperlink like in the list form using content editor webpart.



Add the following content in the text file and call this text file in content editor webpart

<div align="right">

<table cellspacing="0" cellpadding="0" border="0" dir="none" id="Hero-WPQ2">
<tbody><tr><td class="ms-list-addnew ms-textXLarge ms-list-addnew-aligntop ms-soften">
<a title="Add a new item to this list or library." target="_self"    href="/MOM/Lists/MOM/NewForm.aspx" class="ms-heroCommandLink" id="idHomePageNewItem">
<span class="icon icon-add-new"></span>
<span>Add new MOM </span></a>
</td></tr></tbody></table>

</div>


<style>

/* css example with custom class */
/* img tag technique */


/* background technique */

.icon {
display: inline-block;
overflow: hidden;
vertical-align: middle;
}

.icon-add-new {
width: 22px;
height: 21px;
background: url('/_layouts/15/images/spcommon.png?rev=23') no-repeat -130px -134px;
}

</style>

Ref: 
http://ericoverfield.com/sharepoint-2013-spcommon-png-sprite-breakdown/
https://gist.github.com/empo/6380de9a10710646fd62

Tuesday, May 03, 2016

SharePoint 2013 : People Editor Control SharePoint:PeopleEditor Vs SharePoint:ClientPeoplePicker in Server Object Model

Searched for difference between People Editor Control SharePoint:PeopleEditor  Vs SharePoint:ClientPeoplePicker in SharePoint 2013 Server Object Model

Requirement: Need to add Users and SPGroup using server object model through Visual Webpart.
Googled and find the below code snippet from different site and consolidate below, May be useful to someone. 

Using SharePoint:PeopleEditor control ( Supports SharePoint Version 2010 and 2013)

ASCX File
<SharePoint:PeopleEditor ID="pplCC" runat="server" class="ms-authoringcontrols" SelectionSet="User,SPGroup"   />

Code File

Setting Values to the Control from the list item
SPFieldUserValueCollection userCol = new SPFieldUserValueCollection(SPContext.Current.Web, item["Attendees"].ToString());

SetUserCollectionWithPeopleEditor(pplCC, userCol);


//set People editor control with the SP user collection
        public void SetUserCollectionWithPeopleEditor(PeopleEditor editor, SPFieldUserValueCollection userCollection)
        {
            System.Collections.ArrayList userList = new System.Collections.ArrayList();
            if (null != userCollection)
            {
                foreach (SPFieldUserValue user in userCollection)
                {
                    PickerEntity tempEntity = new PickerEntity();

                    if (user.User != null)
                    {
                        tempEntity.Key = user.User.LoginName;
                    }
                    else
                    {
                        tempEntity.Key = user.LookupValue;
                    }
                    userList.Add(tempEntity);
                }
                editor.UpdateEntities(userList);
            }
        }
                           
Add or Update Values from Control to the list
if (pplCC.Accounts.Count > 0)
                        {
                            oSPListItem["Attendees"] = GetPeople(pplCC, web);
                            // GetUsersFomPeoplePicker("", web, pplCC);
                        }

//set values People editor control
private SPFieldUserValueCollection GetPeople(PeopleEditor people, SPWeb web)
        {
            SPFieldUserValueCollection values = new SPFieldUserValueCollection();
            if (people.ResolvedEntities.Count > 0)
            {
                for (int counter = 0; counter < people.ResolvedEntities.Count; counter++)
                {


                    PickerEntity user = (PickerEntity)people.ResolvedEntities[counter];
                    switch ((string)user.EntityData["PrincipalType"])
                    {
                        case "User":
                            SPUser spUser = web.EnsureUser(user.Key);
                            SPFieldUserValue userValue = new SPFieldUserValue(web, spUser.ID, spUser.Name);
                            values.Add(userValue);
                            break;

                        case "SharePointGroup":
                            SPGroup siteGroup = web.SiteGroups[user.EntityData["AccountName"].ToString()];
                            SPFieldUserValue groupValue = new SPFieldUserValue(web, siteGroup.ID, siteGroup.Name);
                            values.Add(groupValue);
                            break;
                        default:
                            SPUser webUser = web.EnsureUser(user.Key);
                            SPFieldUserValue spuserValue = new SPFieldUserValue(web, webUser.ID, webUser.Name);
                            values.Add(spuserValue);
                            break;
                    }
                }
            }
            return values;
        }



Using SharePoint: ClientPeoplePicker control ( Supports only in SharePoint 2013)

ASCX File
            <SharePoint:ClientPeoplePicker
        Required="true"
        ValidationEnabled="true"
        ID="pplPickerSiteRequestor"
        UseLocalSuggestionCache="true"
        PrincipalAccountType="User,SPGroup"
        runat="server"
        VisibleSuggestions="3"
        Rows="3"
        AllowMultipleEntities="true"
        CssClass="ms-long ms-spellcheck-true user-block"
        ErrorMessage="*"
/>


Code File

Setting Values to the Control from the list item
    SPFieldUserValueCollection userCol = new SPFieldUserValueCollection(SPContext.Current.Web, item["Attendees"].ToString());
                            SetUserCollectionWithPeopleEditorCLIENT(pplPickerSiteRequestor, userCol);

//set People editor control along with the SP user collection to update the list
public void SetUserCollectionWithPeopleEditorCLIENT(ClientPeoplePicker editor, SPFieldUserValueCollection userCollection)
        {
                        
            System.Collections.ArrayList userList = new System.Collections.ArrayList();
            if (null != userCollection)
            {
                foreach (SPFieldUserValue user in userCollection)
                {
                    PeopleEditor pe = new PeopleEditor();
                    PickerEntity tempEntity = new PickerEntity();

                    if (user.User != null)
                    {
                        tempEntity.Key = user.User.LoginName;
                        tempEntity = pe.ValidateEntity(tempEntity);
                    }
                    else
                    {
                        tempEntity.Key = user.LookupValue;
                    }
                    userList.Add(tempEntity);
                    editor.AddEntities(new List<PickerEntity> { tempEntity });
                }
              
            }
        }

Add or Update Values from Control to the list
//FOR UPDATE client people editor
if (pplPickerSiteRequestor.ResolvedEntities.Count > 0)
{

oSPListItem["Attendees"] = GetPeopleCLIENT(pplPickerSiteRequestor, web);

}

//set People editor control along with the SP user collection to update the list
private SPFieldUserValueCollection GetPeopleCLIENT(ClientPeoplePicker people, SPWeb web)
        {
            SPFieldUserValueCollection values = new SPFieldUserValueCollection();
            if (people.ResolvedEntities.Count > 0)
            {
                for (int counter = 0; counter < people.ResolvedEntities.Count; counter++)
                {
                    
                    PickerEntity user = (PickerEntity)people.ResolvedEntities[counter];
                    switch ((string)user.EntityData["PrincipalType"])
                    {
                        case "User":
                            SPUser spUser = web.EnsureUser(user.Key);
                            SPFieldUserValue userValue = new SPFieldUserValue(web, spUser.ID, spUser.Name);
                            values.Add(userValue);
                            break;

                        case "SharePointGroup":
                            SPGroup siteGroup = web.SiteGroups[user.EntityData["AccountName"].ToString()];
                            SPFieldUserValue groupValue = new SPFieldUserValue(web, siteGroup.ID, siteGroup.Name);
                            values.Add(groupValue);
                            break;
                        default:
                            SPUser webUser = web.EnsureUser(user.Key);
                            SPFieldUserValue spuserValue = new SPFieldUserValue(web, webUser.ID, webUser.Name);
                            values.Add(spuserValue);
                            break;
                    }
                }
            }
            return values;

        }

Many thanks to all who shared the knowledge.