Sunday, February 5, 2012

Manage User Properties Change Display Order buttons are not working

Manage User Properties Page enables the User Profiles Service Application administrator to manage the user profile properties. He can ِِِAdd, Edit, Map, or Change the Display Order of the properties in My Profile Page.
Figure (1) Manage User Profile Service Application Page

One of the problems which I faced with Change Display Order buttons shown in Figure (2), that when I press on Move Up or Move Down buttons that it has no effect on the order and the order stay as it is.


Figure (2) Manage User Properties Page
 
After investigation and diagnosing the problem, I exported the list of the properties using the following PowerShell Script:

Add-Type -Path "c:\program files\common files\microsoft shared\web server extensions\14\isapi\microsoft.office.server.dll"
$site = Get-SPSite http://intranet.contoso.com:80/my/
$context = Get-SPServiceContext $site
$upConfigManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($context)
$profilePropertyManager = $upConfigManager.get_ProfilePropertyManager()
$pspm = $upConfigManager.GetProperties()
$pspm | Export-CSV c:\productionProp.csv
$site.Dispose() 

The result of executing the script shown in Figure (3).

Figure(3)  Export user properties result 

I found that some properties have the same Display Order Index value. So, I thought that this could be the reason. So, I wrote another PowerShell script to reset the Display Order index value for all the properties starting from 0 until the last property index. The following is the PowerShell Script which I used to reset the index:

Add-Type -Path "c:\program files\common files\microsoft shared\web server extensions\14\isapi\microsoft.office.server.dll"
$site = Get-SPSite http://intranet.contoso.com:80/my/
$context = Get-SPServiceContext $site
$upConfigManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($context)
$profilePropertyManager = $upConfigManager.get_ProfilePropertyManager()
$pspm = $upConfigManager.GetProperties()

$index = 0
$pspm.GetEnumerator() | ForEach-Object {
    $pspm.SetDisplayOrderByPropertyName($_.Name , $index)
    $pspm.CommitDisplayOrder()

    $index = $index +1
}
$site.Dispose()

After executing the script I tested the buttons to change the order of the properties and it works perfect again.

Note: This script resets the order of the properties, and it does not include the sections.

If you have any comments or questions, please don’t hesitate to post your comment.





Monday, November 28, 2011

Query Join between related lists in SharePoint 2010 using "SPQuery.Joins" property

One of the famous complains of the developers who switched from SQL background (For example Me :-)) to SharePoint development; is how to query related lists with joins instead on looping and filtering both of them using different queries.
You can Achieve this using the SPQuery.Joins Property.
Example:

  
    
      
      
    
  

  
    
      
      
    
  


Source: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.joins%28v=office.14%29.aspx

Thursday, October 6, 2011

PDF Documents Collaboration with SharePoint 2010

SharePoint 2007/ 2010 mainly used for documents management and collocation; including all the features (Check In, Check Out, Version History, etc...)  using Microsoft Office Suite. By default SharePoint does not support these features for PDF files. Adobe has released a product called Adobe Acrobat X which you can use it to achieve a good integration with SharePoint and use all its features Check In, Check Out, and Collect Feed back workflows. The following screenshots show some of its features [1].
  
Figure (1)  Open and Check out file


Refrences:

Thursday, March 17, 2011

"Insert Related List" feature in SharePoint 2010


 One of the helpful features in SharePoint 2010 is the "Related List" button.


Figure(1)

This button is used to add lists which are related to a specific list (one-to-many relationship) in the same page and filter the data according to the selected item in the primary list.
Example: In this example I’ll present a demo for Customers and Customer Orders, and how to relate the data and display it in one page.
1- Create the following two lists:
    • Customers:
    Figure(2) Customers List
    • Customer Orders:
    Figure(3)  Customer Orders
    Where the Customer field is a lookup from Customers list.

    2- Enter some data to both lists.
      3- Browse to a SharePoint page and add Customers List web part to it.


      Figure(4)
      4- In the Page Edit Mode; Activate the Customers web part by Selecting it.

      Figure(5)
      5- Clicking on “Insert Related List” shows all the lists which are related to the Customers list.
      6- Select Customer Orders.
      7- Now you will see that a new column “Select” has been added to the Customers web part and when the user clicks on it, it filters the list of orders by the selected customer.

      Figure(6)

      I hope this was useful for you.
      If you have any comments don't hesitate to post it.
       

      Sunday, February 20, 2011

      Create Site Action (SharePoint Designer 2010 Workflow Actions)

      The actions can be downloaded here.

      Add the “Create a Site” action to a SharePoint 2010 Designer Workflow

      image

      Configuration

      image
      URL: The url of the web site. You could either use an relative url to create the site direct under the current site or an absolute url to create the site under any site. The workflow initiator needs appropriate permissions. Or you can use an impersonation step to run the action under the permissions of the workflow author.
      Title: Title of the site
      Description: Description of the site
      Template: Template name of the new site. Default is Team Site (STS#0).
      You can get a list of all farm templates with the PowerShell command “Get-SPWebTemplates”.
      To get a list of templates from a specific site’s template catalog use the following PowerShell command:
      Get-SPWeb http://contoso/sites/spd | %{$_.GetAvailableWebTemplates($_.Language)}
      image
      Use the name of the template e.g. WIKI#0
      Language Code: The language code for the new site e.g. 1033 for English or 1031 for German. 0 means inherit the language from the parent site.
      Inherit Permission: Inherit permissions from the parent site.
      Inherit Top Navigation: Use the same top navigation as the parent site.
      Output: Returns the absolute url of the new site
      image

      Publish an run the workflow…


      Source http://cglessner.blogspot.com/2011/02/create-site-action-sharepoint-designer.html

      Saturday, February 5, 2011

      Friday, February 4, 2011

      SharePoint 2010: Navigation Drop Down Styles


      If you would like to stylize your navigation drop downs in SharePoint 2010 here are the 4 main key classes to update your CSS.
      If you are looking for SharePoint 2007 styles see this blog post here.
      The OOTB Navigation Drop Down CSS: “COREV4.CSS”
      .s4-tn ul.dynamic{  
      /* [ReplaceColor(themeColor:"Light2")] */ background-color:white;  
      /* [ReplaceColor(themeColor:"Dark2-Lighter")] */ border:1px solid #D9D9D9;  
      } 
      
      .s4-tn li.dynamic > .menu-item{  
      display:block;  
      padding:3px 10px;  
      white-space:nowrap;  
      font-weight:normal;  
      } 
      
      a:link{  
      /* [ReplaceColor(themeColor:"Hyperlink")] */ color:#0072BC;  
      text-decoration:none;  
      } 
      
      .s4-tn li.dynamic > a:hover{  
      font-weight:normal;  
      /* [ReplaceColor(themeColor:"Light2-Lighter")] */ background-color:#D9D9D9;  
      }
      

      image

      Example (Not good design, but you get the point)
      /* Drop Down: Container Style */

      .s4-tn ul.dynamic{  
      background-color:white;  
      border:3px dashed #000;  
      }  
      /* Drop Down: Item Padding Style */   
      .s4-tn li.dynamic > .menu-item{  
      padding:10px 20px 10px 20px;  
      }  
      /* Drop Down: Hyperlink Styles */   
      .s4-tn li.dynamic > a{  
      font-size: 9pt;  
      font-weight:normal;  
      color:#000;  
      }  
      /* Drop Down: Hyperlink Hover Style */   
      .s4-tn li.dynamic > a:hover{  
      font-weight:bold;  
      background-color:#0C0;  
      color:#FFF;  
      }
      
      What it will look like:
      image
      Simply take the above 4 main CSS classes and add/edit/delete the properties to make your drop down style truly unique."

      Source:
      http://erikswenson.blogspot.com/2011/02/sharepoint-2010-navigation-drop-down.html

      Wednesday, January 26, 2011

      The User Profile Synchronization service does not start on a stand-alone installation of SharePoint Server 2010

      SharePoint Server 2010  has two installation options:
      1- Complete Installation:
           You can add more Web Front End Servers,  Application Services Servers, and DataBase servers to your
          farm.
      2- Stand-alone Installation:
          This installs all the components of SharePoint on one server, and you don't have the possibility to join more
           servers to the Farm.

      One of the limitations of Stand-alone Scenario is:
      "The User Profile Synchronization service is not designed to work on a stand-alone installation of SharePoint Server 2010."

      Source:
      http://support.microsoft.com/kb/983061

      Configuring My Site in SharePoint 2010

      The following article explains how to configure My Site in SharePoint 2010.
      http://sharepointgeorge.com/2010/configuring-my-site-sharepoint-2010/

      Monday, January 24, 2011

      Multilingual user interface overview (SharePoint Server 2010)

      Dears,
      I found the following article from MSDN which explains
      • Use and benefits of the multilingual user interface

      • How the multilingual user interface works

      • What is supported by the multilingual user interface

      • Adding and modifying application content

      • Exporting and importing translated content

      • Using the multilingual user interface with managed metadata

      • Limitations of the multilingual user interface 

      http://technet.microsoft.com/en-us/library/ff805062.aspx#Section2 

      Monday, January 10, 2011

      New SharePoint Developer Features in VS2010 SP1 – Unit Testing and IntelliTrace (Saaid Khan)

      As part of VS 2010 SP1 SharePoint developers can now take advantage of IntelliTrace as well as create unit tests that use SharePoint API’s.

      With 64-bit support now enabled in IntelliTrace, you can use IntelliTrace in your SharePoint farm solutions. You can set a break-point in your code or break execution and then view the IntelliTrace data. You can also collect IntelliTrace data and save the .itrace log file for viewing at a later time. Check out Justin Marks great article on IntelliTrace in VS2010.

      For those SharePoint developers that create unit tests, you can now create and execute unit tests for your SharePoint 2010 solutions if they use SharePoint API’s. In order to execute these unit tests you first need to deploy your SharePoint solution to your local developer machine. After that, you can execute the unit tests as you would normally.

      Source



      Thursday, December 23, 2010

      Display Success and Error messages in SharePoint 2010

      One of the common functions which is required from any developer; is to display a Success and Error messages to the user, and it’s always better to use the same style of the main application.
      In SharePoint: SPUtility class contains two methods to achieve this.
      Success Message:

      SPUtility.TransferToSuccessPage: It is used to display a Success Message, and it has two overloads.
      SPUtility.TransferToSuccessPage Method (String message)
      

      Example:
      SPUtility.TransferToSuccessPage("Welcome, You are in Success Page");
      

      Figure (1) shows the output of this code. In this case the “Ok” button will redirect to the current SharePoint Site home page.


      Figure(1) Success Page

      SPUtility.TransferToSuccessPage Method (String message, String nextUrl, String linkText, String linkUrl)
      

      Example:
      SPUtility.TransferToSuccessPage("Welcome, You are in Success Page", "/SitePages/Continue.aspx", "", "");
      
      In this case the “Ok” button will redirect to “"/SitePages/Continue.aspx” page.

      Error Message:
      The same is applied to SPUtility.TransferToErrorPage: it is used to display error message.

      SPUtility.TransferToErrorPage(String message)
      
      Example:
      SPUtility.TransferToErrorPage("Sorry it seems that you did a mistake. This is the error page"); 


      Figure (3) Error Page

      Wednesday, December 15, 2010

      SQL 2008 DateTime dataTypes

      SQL 2008 introduced new types of DateTime data type (Time, Date, DateTime, DateTime2, SmallDateTime and DateTimeOffset).
      The following query example explains the difference between each one of them.
      SELECT 
      CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'Time' 
      ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'Date' 
      ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 'Smalldatetime' 
      ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'Datetime' 
      ,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetime2(7)) AS  'Datetime2'
      ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS   'Datetimeoffset'
      ,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetimeoffset(7)) AS 'Datetimeoffset IS08601';
      

      Here is the result set.


      Data type

      Output

      Time

      12:35:29. 1234567

      Date

      2007-05-08

      Smalldatetime

      2007-05-08 12:35:00

      Datetime

      2007-05-08 12:35:29.123

      datetime2

      2007-05-08 12:35:29. 1234567

      Datetimeoffset

      2007-05-08 12:35:29.1234567 +12:15



      Reference:
      MSDN

      Sunday, December 12, 2010

      Filter list of SQL objects in SQL Management Studio

      As I believe that to increase your productivity; you have to master using the tools which you are using. SQL Management Studio is one of the tools which is used by any developer during the day.
      If you are working in a large project and you have a large number of objects (Tables, Stored Procedures, Functions or Views) in the application database, and you want to edit a certain one. Instead of scrolling up and down and reading the names, you can easily filter the list using the Filter context menu.
      The following screen-shots present how you can find a table by name and Creation date.






      Friday, December 10, 2010

      How to repair a SQL Server 2005/ 2008 Suspect database

      Some times after Hardware or Power failure, when you open the SQL Management studio; you find that some of your databases are not accessible, and they are marked as “Suspect”
      To fix this you can run the following query (replace “MyDataBaseName” with the database name):
      ALTER DATABASE MyDataBaseName SET EMERGENCY
      DBCC checkdb ('MyDataBaseName')
      ALTER DATABASE MyDataBaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
      DBCC CheckDB ('MyDataBaseName', REPAIR_ALLOW_DATA_LOSS)
      ALTER DATABASE MyDataBaseName SET MULTI_USER

      Source:
      http://gargmanoj.wordpress.com/2008/07/17/how-to-repair-a-sql-server-2005-suspect-database/

      Get list of Months Names in the current Thread language

      One of the functions which are required in the localized applications is to get the list of months names in the current culture language.
      To do this, some people do this using resources and add it manually to the control (DropDownList, ListBox, etc...), but you can accomplish this by the following single line of code which returns the months names translated to the current Thread culture.
      Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames.Take(12);
      

      Demo:
      If the current thread culture is “fr-FR” it returns:

      If the current thread culture is “de-DE” it returns:


      If the current thread culture is “ar-EG” it returns:

      I hope that this saves some of your valuable time.

      Wednesday, December 8, 2010

      Auto Sign out SharePoint

      One of the customer requirements was "If the user is not the using the SharePoint portal in the browser for more than 10 minutes; The session should be ended for security reasons".
      To accomplish this  I tried to enable the Session State for the SharePoint site "Which is disabled by default" and changed the Session time out, but it didn't work. So after a lot of research and googling, I decided to do it by JavaScript and with the help of the magic of JQuery:
      I added the following java script block in the master page and it works fine , and the customer is satisfied.

      <script src="http://code.jquery.com/jquery-1.4.4.js">
       
      <script> $(document).ready(function(){  window.setTimeout(  
      function(){   ie 
      = (document.all) ? 
      true : false;
      if(ie){ document.execCommand('ClearAuthenticationCache',false);   }
      var pathname = window.location.pathname;
      window.location='/_layouts/AccessDenied.aspx?loginasanotheruser=true&amp;Source='  
      pathname ;  }, 600000); }); 
      </script>
      
      

      I hope it helps you.

      Sunday, December 5, 2010

      Insert multiple rows values in one Insert statement (SQL 2008)

      One of the nice tricks of insert statement; that it is possible to insert multiple rows values in one insert statement; you don’t need to insert each row in a separate statement.

      CREATE TABLE DemoTable
          (
            ItemID INT IDENTITY
                       PRIMARY KEY,
            FirstName VARCHAR(50),
            LastName VARCHAR(50),
            CountryCode VARCHAR(4),
          )
      
      INSERT  [DemoTable]
              (
                [FirstName],
                [LastName],
                [CountryCode]
              )
      VALUES  ('Mahmoud','Hakeem','EG'),
              ('Michel','Durian','DE'),       
              ('Thomaz','Miracle','Fr')
       
      

      Tuesday, November 9, 2010

      Using code to create InfoPath Custom Rule Condition

      The following article explains how to create a custom rule condition using .NET code, and use it by the infopath designer.

      http://www.infopathdev.com/blogs/greg/archive/2004/09/15/Use-Code-to-Determine-a-Rule-Condition.aspx

      I hope it helps you.