12 min read

 

Microsoft SharePoint 2010 Enterprise Applications on Windows Phone 7

Microsoft SharePoint 2010 Enterprise Applications on Windows Phone 7

Create enterprise-ready websites and applications that access Microsoft SharePoint on Windows Phone 7

To get started with Internet Explorer Mobile let’s look at basic web page architecture.

 

Web page architecture

Web pages on the client side mainly consist of three vital components: HTML, CSS, and JavaScript. The exact version of each of these varies, but in the end it all comes down to these three pieces.

HyperText Markup Language (HTML)

HyperText Markup Language (HTML) is the container for the page content. The page should contain just that content and nothing else. A properly coded site would leave the presentation and functionality portions of the page to CSS and JavaScript. In addition, the content should be constructed in a manner that makes logical sense for the content that is being delivered. This is called semantic HTML.

People with disabilities use devices, such as a screen reader, to get the content of a site. These screen readers can only gather information from the actual markup of the site. If we have a PNG image with text in it, the screen reader cannot “see” that information. In that particular case, we can use the alt attribute of the image to provide a hint to the content, but it would be better to put the content inside a paragraph, unordered list, or some other textual tag and then replace it with an image if absolutely required using JavaScript.

The other case that was mentioned earlier was that search engines can better determine the contents of a web page with semantic markup. This will help our page rankings and hopefully drive more visitors to our site.

Think about the HTML markup like the script of a movie. Although we’ll add lights, actors, and probably special effects later, right now the black and white text on paper has to convey all of the meaning. The same is true of the HTML markup for your site. As you build websites, constantly keep in mind what information you are trying to impart with the page and make that the focus.

Cascading Style Sheets (CSS)

Cascading Style Sheets (CSS) are documents that describe the way HTML should be displayed. The CSS language allows the web developer to separate the design aspects (layout, colors, fonts, and so on) from the page content. One could easily change the entire look and feel of a page simply by replacing the CSS files. An amazing group of examples of this is available at http://csszengarden.com. The CSS Zen Garden website demonstrates the amazing power that CSS has on the presentation of HTML content. Utilizing a proper style sheet can result in content that will quickly display the relevant information that a Windows Phone 7 user has come to expect from the applications on the phone.

When developing websites that are going to be viewed on Internet Explorer Mobile, it is important to keep in mind some very important potential problems. Although float works great on desktop browsers and will work on many mobile browsers, the content within these containers may not look good on a small screen.

The CSS float attribute was one of the first tools that allowed web developers to break free from table based layouts, that is, laying out the contents of a page using tables. Float allowed developers to group content in div elements and then float those block elements into position. It is a very powerful tool, but on a mobile device, the limited screen size would hamper the ability for the user to view the content. Instead, they would be constantly scrolling left and right or up and down to find all the content.

A better way of handling this would be to utilize float on the desktop version of the site and then leave the div elements in block display allowing the IE Mobile browser to handle the content layout.

Along these same lines, the CSS attributes, padding and margin, work great for precise positioning of elements on a desktop browser. However, the limited screen real-estate of a Mobile browser limits the usefulness of this positioning power. Try to limit the use of these attributes on the mobile device and only use them to highlight useful information.

Finally, because pixels are absolute values, a pixel is a precise defined scale of measurement with no room for interpretation; the phone has to work more to display those elements that are positioned using pixel measurements. Using points, em, or percentage measurements instead, allow the phone to be more fluid with the layout.

Be sure to test the site on Windows Phone 7 devices to ensure the content is legible and the display is fine.

JavaScript

JavaScript, otherwise known as ECMAScript, is the scripting language that is used to create dynamic user interfaces and allow a page to update “on the fly”. Users have come to expect a certain fluidity to their web experiences, and now with the power of Internet Explorer Mobile for Windows Phone 7, they can have that same power in the palm of their hand.

Remember that the user is probably looking at a 3.5 inch screen, has fingers that are roughly 40-80 pixels square, and those fingers are incapable of registering a hover command to the browser. If your navigation, for example, requires the user to hover over something, this will not work in Internet Explorer Mobile. Instead, make the navigation an easy to use, unordered list of hyperlinks

Putting HTML, CSS, and JavaScript together

Windows Phone 7 is about getting the relevant information viewable with minimal fuss. The following are some tips for creating a website for Windows Phone 7’s Internet Explorer Mobile:

  • Show only the content that is relevant for the page requested
  • Reduce the use of images and colors
  • Remove the extra-large hero images
    • Hero images are those large images usually at the top of the main content section, but usually used as a graphic headline.
    • Usually, they don’t contain any content and only serve to enhance the design of the site.
  • Rearrange the navigation to take up a minimum amount of space
  • Move the navigation to the bottom of the page if possible
  • Remove flashy loading screens

Utilizing HTML, CSS, and JavaScript with proper discipline will result in more satisfied customers.

Developing websites is not a trivial task. Mastering each of these three components is a great task. It is important, while developing websites, to try and minimize as much duplication as possible, not only in the JavaScript code that so many developers tended to focus on, but also in the CSS and the HTML content. Reducing duplication will allow for maintainable, upgradable, and understandable code.

Also, by reducing duplication, the amount of data sent to the browser is also reduced. This is helpful when dealing with a browser that is connecting from a patchy cellular network.

Historically, building a mobile version of a website meant a completely different team of designers and web developers built a totally separate web application from the desktop version of the site. Then, using the server side code, the mobile browsers were detected and redirected to the mobile version. SharePoint does this by redirecting mobile browsers to {server}/_layout/mobile/mblwiki.aspx?Url=%2FSitePages%2FHome%2Easpx as an example.

When starting a new web application, a general rule of thumb is to use content adaptation techniques for the application. However, for a baseline you must have at least:

  • ECMAScript 3
  • W3C DOM Level 1
  • W3C standard box model support
  • CSS2 rendering
  • Client-side cookies support
  • XMLHttpRequest object support

By targeting this lowest common denominator of browser, we will ensure that our web applications will run well on most browsers on the web.

Remember that common practices on desktop browsers may end up being annoyances on a mobile device. Try not to open modal dialog boxes, or even open pop-ups. Opening a pop-up window will cause a whole new tab to appear. This may even close a tab that the user had previously opened if they already had six tabs open.

When designing the user interaction for a website, always keep the user in mind. They are busy people coming to your website. Be kind to them. Give them the information they are looking for without hassle.

 

Internet Explorer Mobile

Windows Phone 7 comes with a new browser that is based on the rendering engine of Internet Explorer 7 and some JavaScript improvements from Internet Explorer 8. Additionally, it includes some enhancements that aren’t found in either of those desktop browsers.

Internet Explorer Mobile User Agent

The Internet Explorer Mobile User Agent string is as follows:

Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1;
IEMobile/7.0; <DeviceManufacturer>; <DeviceModel>)

This UA String allows the device manufacturer to insert their name and the model of the phone in the string. Knowing the User Agent string is helpful when reviewing server logs to determine what browsers are coming to your website. This will help you optimize your site for the people who actually are viewing your content.

Like previous versions of Internet Explorer Mobile, the user can select either a Mobile version or a Desktop version display engine. When the Desktop version is selected, the User Agent string changes to the following:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; XBLWP7; ZuneWP7)

Changing the display engine mode can be accomplished on the Internet Explorer SETTINGS screen, as shown in the following screenshot:

Microsoft SharePoint 2010 Enterprise Applications on Windows Phone 7

Although this choice could complicate things, as we develop our sites, we should make careful consideration of how we are going to treat the mobile version, but try not to detect the desktop version. If the user makes a conscious choice to view the desktop version, we should not force them to view something different from what they would see on a real desktop browser.

Client side browser detection

Many people use the user agent string to detect at runtime what to display on the browser. Although this works, there are better techniques to find out if the browser is mobile. Those techniques should be used instead of User Agent detection.

Using property detection instead of browser detection will allow your site to be forward compatible.

Forward compatibility isn’t a very complex idea. It is just thinking about programming so that as new browsers come along with new capabilities, we won’t have to rewrite our applications to take advantage of these capabilities. The application just takes advantage of whatever functionality is available to it in whatever browser in which it is currently running. An example of property detection is as follows:

function hasAdvancedDOM() {
// check for a feature that is known to be advanced
if(document.getElementsByClassName)
return true;
return false
}


Downloading the example code
You can download the example code files from here

The preceding code simply detects if the DOM function document.getElementsByClassName() exists or not. Internet Explorer Mobile has this function, as does Firefox 2+, Safari, Chrome, and Internet Explorer 9. However, previous versions of Internet Explorer Mobile did not have this function. If we had this in a previous version of a website, we wouldn’t have to do anything special to get this to work in Windows Phone 7’s Internet Explorer Mobile. Although, the code we would actually write in a web page would be much more complicated, this example demonstrates a starting point.

Server-side detection

Server-side detection usually uses the User Agent string along with a large list of mobile device User Agent strings to determine the capabilities of the browsers requesting a page. This list of mobile devices and their capabilities are kept in a .browser file.

There are some projects on the web to keep and maintain this .browser file. The best known of these, “Mobile Device Browser File”, available at http://mdbf.codeplex.com, lost funding from Microsoft. There is another one that can be found at http://aspnet.codeplex.com/releases/view/41420.

The main topic of this article is SharePoint 2010 development for Windows Phone 7. However, ASP.NET 3.5 SP1 is the framework that SharePoint 2010 development is based on. This framework has a smaller list of browsers in the .browser file than the more current ASP.NET 4. One of the omissions is IEMobile. What this means is that in ASP.NET 4, you can use the following code to detect a mobile browser:

Request.Browser.IsMobileDevice

This code will work in ASP.NET 3.5 SP1, but it will not return true for Windows Phone 7’s Internet Explorer Mobile by default.

The simplest solution is to use code like this to detect the IE Mobile browser:

Request.UserAgent.ToString().Contains("IEMobile")

We could probably do better here. In the first place, we could update SharePoint’s compat.browser file to include Windows Phone 7. The compat.browser can be found here: <drive>:inetpubwwwrootwssVirtualDirectories<site>80App_Browserscompat.browser

The structure of this file can be found at the following URL:

http://msdn.microsoft.com/en-us/library/ms228122.aspx

If you look at SharePoint’s compat.browser file, the fourth browser listed looks like it might be for the Windows Phone 7 Internet Explorer Mobile. However, a closer examination will show that this browser is actually for the Office Hub in Windows Phone 7. To add the Internet Explorer Mobile browser, copy the browser elements for Internet Explorer Mobile for Windows Mobile 6.5 and edit it like this:

<browser id=”IE7MobileDesktopMode” parentID=”IE6to9″>
<identification>
<userAgent match=”XBLWP7″ />
</identification>
<capabilities>
<capability name=”supportsTouchScreen” value=”true” />
</capabilities>
</browser>
<browser id=”IE7MobileMobileMode” parentID=”Mozilla”>
<identification>
<userAgent match=”(?i)Windows Mobile OSs7.d.*IEMobile/
(?’version’d+).(?’minor’d+)” />
</identification>
<capabilities>
<capability name=”browser” value=”IE Mobile” />
<capability name=”canInitiateVoiceCall” value=”true” />
<capability name=”isMobileDevice” value=”true” />
<capability name=”javascript” value=”true” />
<capability name=”optimumPageWeight” value=”1500″ />
<capability name=”tables” value=”true” />
<capability name=”version” value=”${version}” />
<capability name=”supportsTouchScreen” value=”true” />
</capabilities>
</browser>


This will make our code easier to manage later by allowing us to use the Request.Browser.IsMobileDevice property.

The change here, besides changing the browser ID, is in the regular expression which is used to detect the browser. In the desktop mode, we look for the text, XBLWP7, as this is a very obvious change in the User Agent in this state. For the mobile mode, we copied the IE Mobile 6 plus browser section. Microsoft changed the User Agent slightly between IE Mobile 6 and IE Mobile 7. The change comes in the User Agent, IE Mobile 7 doesn’t have a space between the browser name IEMobile and the start of the version number. Instead, it has a forward slash. IE Mobile 6 had a space between the browser name and the version number.

 

LEAVE A REPLY

Please enter your comment!
Please enter your name here