際際滷

際際滷Share a Scribd company logo
Local Touch  Global Reach


Stretching the Box
Getting the most out of the SharePoint user interface
- without custom code


by Derek Gusoff
senior consultant, Sogeti USA




                                                             www.us.sogeti.com
Local Touch  Global Reach



Your presenter

Derek Gusoff
Senior Consultant, Sogeti USA
http://derekgusoff.wordpress.com
@dgusoff
Derek.Gusoff@us.sogeti.com




                                   www.us.sogeti.com            2
Local Touch  Global Reach



How I came to write this talk

 SharePoint experience at large big-three automaker
 Huge SharePoint environment
 Custom Code not generally allowed on the farm
 Forced by circumstance to develop complex solutions in
  a no-code environment
 Discovered the hard way what is and isnt possible




                                                  www.us.sogeti.com            3
Local Touch  Global Reach



Expectation setting

 I am a developer at heart, and this talk was conceived
  with a developer audience in mind
 I will NOT show gobs of code  Id like you to stay awake!
 High-level concepts and introduce technologies 
  implementation is up to you and your organization.
 If youre interested in implementation details, come see
  me.




                                                  www.us.sogeti.com            4
Local Touch  Global Reach



Meet Bob, the accidental SharePoint Developer




                                                www.us.sogeti.com            5
Local Touch  Global Reach



DEMO 1




 Bobs custom code solution




                              www.us.sogeti.com            6
Local Touch  Global Reach



Problems with Bobs solution


 Custom code destabilizes a farm
 Custom code causes challenges for
  upgrade/patch/migration efforts
 Custom code is time-consuming to develop
 Custom code gets really complex, really fast
 Custom code is almost never as functional as
  OOB components
 Solution upgrades are a hassle

                                          www.us.sogeti.com            7
Local Touch  Global Reach



When is custom code unavoidable?

 Timer Jobs or other farm-level components
 Complex or proprietary business logic
 Integration with External Systems
 State Machine workflows
 Interaction with Service Applications
  Managed Metadata
  Search
  Business Connectivity Services



                                              www.us.sogeti.com            8
Local Touch  Global Reach



SharePoints default user interface

Is powerful
   Can easily add/edit/delete/view list items and document metadata
   Supports all built-in data types
   Provides rich functionality


yet lacks some key functionality
 No support for hierarchical data
 No context between entities
 Lookups




but contains hooks which we can leverage to build customized interfaces


                                                                  www.us.sogeti.com            9
Local Touch  Global Reach



The value proposition

 By leveraging standard SharePoint components (the stuff in the box) we
  can create solutions that enhance the user experience and implement the
  unique requirements of our organization.




 The stuff in the box:
   SharePoint List Views
   XSLT List Views
   Standard SharePoint New/Edit/Display forms
   The Ribbon
   The Edit Control Block (ECB)
   JavaScript

                                                              www.us.sogeti.com            10
Local Touch  Global Reach



A few words about JavaScript



 In a SharePoint Farm context, code refers to Custom .NET
  assemblies deployed to the server.
 From a SharePoint perspective, JavaScript is just a file in a
  document library.
 The code executes in a browser, not on the server.
 JavaScript is the future of the web, and of SharePoint.




                                                        www.us.sogeti.com            11
Local Touch  Global Reach



The Key Players

    List View web parts
    Data View web parts
    Standard SharePoint Forms
    The Ribbon
    The Edit Control Block (ECB)
    XSLT
    Site Pages
    OOB Web Services
    JavaScript
     CSOM
     jQuery
     JSLink (2013 only)


                                    www.us.sogeti.com            12
Local Touch  Global Reach



Demo 2  a simple master-detail scenario

Ingredients:
 Edit Control Block
 The Ribbon
 Parameterized XSLT List View Web Part
 A Custom Site Page
 JavaScript/jQuery



Demo 2.1: The OOB way

Demo 2.2: with a little customization applied
                                                 www.us.sogeti.com            13
Local Touch  Global Reach



A few words about packaging and deployment

    The Easy Way
     Implement solutions entirely in SharePoint Designer.
     Advantages: Can get a solution up and running very quickly
     Disadvantages: Not repeatable or maintainable


    The Right Way
     Build a solution package (sandbox or Farm)
     Advantages: Deployable to dev/test/production environments,
                   Repeatable and maintainable
                   Can leverage source control
     Disadvantages: Requires Visual Studio and a developer



                                                                    www.us.sogeti.com            14
Local Touch  Global Reach



Demo 3  a more complex master-detail

Ingredients:
 OOB SharePoint Form
 Custom Site Page
 HTML
 JavaScript CSOM




                                        www.us.sogeti.com            15
Local Touch  Global Reach



Demo 4  tips and tricks for SharePoint Forms




 Faking a calculated field on a new or edit form
 Show/Hide fields and render as read-only




                                                    www.us.sogeti.com            16
Local Touch  Global Reach



Demo 5  an Enhanced Lookup experience

The problem: Users need to perform filtering on lookup fields and
  show related fields other than title. Also, provide a type-ahead
  interface.




Implemented with 100% JavaScript




The idea is the hardest part




                                                            www.us.sogeti.com            17
Local Touch  Global Reach



Demo 6  showing workflow detail inline with the form




 Common complaint: I have to go to a different
  place to see workflow data.
 We can solve this with some creative DOM
  manipulation by screen scraping the workflow
  tasks page




                                                        www.us.sogeti.com            18
Local Touch  Global Reach



Putting it all together: Demo 7

Document Dashboard
 View document metadata
 Download/View document
 View related defect data
 View append only comments inline
 View workflow history
 View version history
 all in one view????
 NO CUSTOM CODE




                                     www.us.sogeti.com            19
Local Touch  Global Reach



Summary

Custom server-side code comes at a price in terms of administration,
  development, and user experience.


When developing solutions for SharePoint, custom code should be the
  LAST option, considered after all other possibilities have been
  exhausted.


SharePoint provides a wide array of options for building custom
  tailored solutions that dont impact the farm.


Rule of thumb: If you can dream it (and you can access the data), then
  you can do it!


                                                           www.us.sogeti.com            20
Local Touch  Global Reach




Thank you




                          www.us.sogeti.com
Ad

Recommended

Testing Drupal Site Performance Across Browsers, Geographies and Networks
Testing Drupal Site Performance Across Browsers, Geographies and Networks
Acquia
Web development
Web development
RaziyaChoudhary
Webdesigningandpublishingcomputerstudiestheorylesson 101212054612-phpapp02
Webdesigningandpublishingcomputerstudiestheorylesson 101212054612-phpapp02
Harshith Rockx
Are You Ready for an Alternative in Application Development?
Are You Ready for an Alternative in Application Development?
LetsConnect
IBM Connect2014 JMP106
IBM Connect2014 JMP106
Thomas Evans
SharePoint and Drupal: Yes, We Can Coexist!
SharePoint and Drupal: Yes, We Can Coexist!
Donna Rodriguez
Open Source CMS vs. SharePoint
Open Source CMS vs. SharePoint
Wax Custom Communications
The Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUG
John Head
Share point saturday presentation 9 29-2012-2
Share point saturday presentation 9 29-2012-2
Derek Gusoff
Empowering business users with hybrid solutions
Empowering business users with hybrid solutions
BlueMetalInc
Good vs Evil SharePoint Customizing
Good vs Evil SharePoint Customizing
Stacy Deere
SharePoint 2013 Pros and Cons
SharePoint 2013 Pros and Cons
Prescient Digital Media
IUE Integrating UI Design Specs
IUE Integrating UI Design Specs
Keith Instone
Jornata llc sps baltimore 2012 - share point branding
Jornata llc sps baltimore 2012 - share point branding
jcsturges
MWLUG 2011: Notes/Domino Application Development Competitive Advantage
MWLUG 2011: Notes/Domino Application Development Competitive Advantage
John Head
IBM Domino 10: A new chapter begins
IBM Domino 10: A new chapter begins
LetsConnect
Mobile web development
Mobile web development
Moumie Soulemane
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
Marc D Anderson
IBM Lotus Notes/Domino App. Dev. Competitive Advantage: The Social Business E...
IBM Lotus Notes/Domino App. Dev. Competitive Advantage: The Social Business E...
John Head
BP 308 - The Journey to Becoming a Social Application Developer
BP 308 - The Journey to Becoming a Social Application Developer
Serdar Basegmez
Notes/Domino Application Development Competitive Advantage - UKLUG 2011 Edition
Notes/Domino Application Development Competitive Advantage - UKLUG 2011 Edition
John Head
Hinting at a better web
Hinting at a better web
Christian Heilmann
NELotus - OpenNTF.org & XPages Mobile Controls
NELotus - OpenNTF.org & XPages Mobile Controls
John Head
Native vs HTML
Native vs HTML
ludlola
Sharepoint mobile
Sharepoint mobile
Chakrapani ramachandran
How Not to Be Conned by Your Drupal Vendor!
How Not to Be Conned by Your Drupal Vendor!
pixelonion
Becoming an IBM Connections Developer
Becoming an IBM Connections Developer
Rob Novak
Introduction to SharePoint as a Development Platform
Introduction to SharePoint as a Development Platform
Ronald Courville
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40

More Related Content

Similar to NW Ohio SharePoint User group 4 10-2013 (20)

Share point saturday presentation 9 29-2012-2
Share point saturday presentation 9 29-2012-2
Derek Gusoff
Empowering business users with hybrid solutions
Empowering business users with hybrid solutions
BlueMetalInc
Good vs Evil SharePoint Customizing
Good vs Evil SharePoint Customizing
Stacy Deere
SharePoint 2013 Pros and Cons
SharePoint 2013 Pros and Cons
Prescient Digital Media
IUE Integrating UI Design Specs
IUE Integrating UI Design Specs
Keith Instone
Jornata llc sps baltimore 2012 - share point branding
Jornata llc sps baltimore 2012 - share point branding
jcsturges
MWLUG 2011: Notes/Domino Application Development Competitive Advantage
MWLUG 2011: Notes/Domino Application Development Competitive Advantage
John Head
IBM Domino 10: A new chapter begins
IBM Domino 10: A new chapter begins
LetsConnect
Mobile web development
Mobile web development
Moumie Soulemane
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
Marc D Anderson
IBM Lotus Notes/Domino App. Dev. Competitive Advantage: The Social Business E...
IBM Lotus Notes/Domino App. Dev. Competitive Advantage: The Social Business E...
John Head
BP 308 - The Journey to Becoming a Social Application Developer
BP 308 - The Journey to Becoming a Social Application Developer
Serdar Basegmez
Notes/Domino Application Development Competitive Advantage - UKLUG 2011 Edition
Notes/Domino Application Development Competitive Advantage - UKLUG 2011 Edition
John Head
Hinting at a better web
Hinting at a better web
Christian Heilmann
NELotus - OpenNTF.org & XPages Mobile Controls
NELotus - OpenNTF.org & XPages Mobile Controls
John Head
Native vs HTML
Native vs HTML
ludlola
Sharepoint mobile
Sharepoint mobile
Chakrapani ramachandran
How Not to Be Conned by Your Drupal Vendor!
How Not to Be Conned by Your Drupal Vendor!
pixelonion
Becoming an IBM Connections Developer
Becoming an IBM Connections Developer
Rob Novak
Introduction to SharePoint as a Development Platform
Introduction to SharePoint as a Development Platform
Ronald Courville
Share point saturday presentation 9 29-2012-2
Share point saturday presentation 9 29-2012-2
Derek Gusoff
Empowering business users with hybrid solutions
Empowering business users with hybrid solutions
BlueMetalInc
Good vs Evil SharePoint Customizing
Good vs Evil SharePoint Customizing
Stacy Deere
IUE Integrating UI Design Specs
IUE Integrating UI Design Specs
Keith Instone
Jornata llc sps baltimore 2012 - share point branding
Jornata llc sps baltimore 2012 - share point branding
jcsturges
MWLUG 2011: Notes/Domino Application Development Competitive Advantage
MWLUG 2011: Notes/Domino Application Development Competitive Advantage
John Head
IBM Domino 10: A new chapter begins
IBM Domino 10: A new chapter begins
LetsConnect
Mobile web development
Mobile web development
Moumie Soulemane
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
Marc D Anderson
IBM Lotus Notes/Domino App. Dev. Competitive Advantage: The Social Business E...
IBM Lotus Notes/Domino App. Dev. Competitive Advantage: The Social Business E...
John Head
BP 308 - The Journey to Becoming a Social Application Developer
BP 308 - The Journey to Becoming a Social Application Developer
Serdar Basegmez
Notes/Domino Application Development Competitive Advantage - UKLUG 2011 Edition
Notes/Domino Application Development Competitive Advantage - UKLUG 2011 Edition
John Head
NELotus - OpenNTF.org & XPages Mobile Controls
NELotus - OpenNTF.org & XPages Mobile Controls
John Head
Native vs HTML
Native vs HTML
ludlola
How Not to Be Conned by Your Drupal Vendor!
How Not to Be Conned by Your Drupal Vendor!
pixelonion
Becoming an IBM Connections Developer
Becoming an IBM Connections Developer
Rob Novak
Introduction to SharePoint as a Development Platform
Introduction to SharePoint as a Development Platform
Ronald Courville

Recently uploaded (20)

Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
ScyllaDB
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
MPU+: A Transformative Solution for Next-Gen AI at the Edge, a Presentation...
MPU+: A Transformative Solution for Next-Gen AI at the Edge, a Presentation...
Edge AI and Vision Alliance
Mastering AI Workflows with FME by Mark Doring
Mastering AI Workflows with FME by Mark Doring
Safe Software
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
Safe Software
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Josef Weingand
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
Database Benchmarking for Performance Masterclass: Session 2 - Data Modeling ...
ScyllaDB
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
MPU+: A Transformative Solution for Next-Gen AI at the Edge, a Presentation...
MPU+: A Transformative Solution for Next-Gen AI at the Edge, a Presentation...
Edge AI and Vision Alliance
Mastering AI Workflows with FME by Mark Doring
Mastering AI Workflows with FME by Mark Doring
Safe Software
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
AI Agents and FME: A How-to Guide on Generating Synthetic Metadata
Safe Software
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Josef Weingand
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
Ad

NW Ohio SharePoint User group 4 10-2013

  • 1. Local Touch Global Reach Stretching the Box Getting the most out of the SharePoint user interface - without custom code by Derek Gusoff senior consultant, Sogeti USA www.us.sogeti.com
  • 2. Local Touch Global Reach Your presenter Derek Gusoff Senior Consultant, Sogeti USA http://derekgusoff.wordpress.com @dgusoff Derek.Gusoff@us.sogeti.com www.us.sogeti.com 2
  • 3. Local Touch Global Reach How I came to write this talk SharePoint experience at large big-three automaker Huge SharePoint environment Custom Code not generally allowed on the farm Forced by circumstance to develop complex solutions in a no-code environment Discovered the hard way what is and isnt possible www.us.sogeti.com 3
  • 4. Local Touch Global Reach Expectation setting I am a developer at heart, and this talk was conceived with a developer audience in mind I will NOT show gobs of code Id like you to stay awake! High-level concepts and introduce technologies implementation is up to you and your organization. If youre interested in implementation details, come see me. www.us.sogeti.com 4
  • 5. Local Touch Global Reach Meet Bob, the accidental SharePoint Developer www.us.sogeti.com 5
  • 6. Local Touch Global Reach DEMO 1 Bobs custom code solution www.us.sogeti.com 6
  • 7. Local Touch Global Reach Problems with Bobs solution Custom code destabilizes a farm Custom code causes challenges for upgrade/patch/migration efforts Custom code is time-consuming to develop Custom code gets really complex, really fast Custom code is almost never as functional as OOB components Solution upgrades are a hassle www.us.sogeti.com 7
  • 8. Local Touch Global Reach When is custom code unavoidable? Timer Jobs or other farm-level components Complex or proprietary business logic Integration with External Systems State Machine workflows Interaction with Service Applications Managed Metadata Search Business Connectivity Services www.us.sogeti.com 8
  • 9. Local Touch Global Reach SharePoints default user interface Is powerful Can easily add/edit/delete/view list items and document metadata Supports all built-in data types Provides rich functionality yet lacks some key functionality No support for hierarchical data No context between entities Lookups but contains hooks which we can leverage to build customized interfaces www.us.sogeti.com 9
  • 10. Local Touch Global Reach The value proposition By leveraging standard SharePoint components (the stuff in the box) we can create solutions that enhance the user experience and implement the unique requirements of our organization. The stuff in the box: SharePoint List Views XSLT List Views Standard SharePoint New/Edit/Display forms The Ribbon The Edit Control Block (ECB) JavaScript www.us.sogeti.com 10
  • 11. Local Touch Global Reach A few words about JavaScript In a SharePoint Farm context, code refers to Custom .NET assemblies deployed to the server. From a SharePoint perspective, JavaScript is just a file in a document library. The code executes in a browser, not on the server. JavaScript is the future of the web, and of SharePoint. www.us.sogeti.com 11
  • 12. Local Touch Global Reach The Key Players List View web parts Data View web parts Standard SharePoint Forms The Ribbon The Edit Control Block (ECB) XSLT Site Pages OOB Web Services JavaScript CSOM jQuery JSLink (2013 only) www.us.sogeti.com 12
  • 13. Local Touch Global Reach Demo 2 a simple master-detail scenario Ingredients: Edit Control Block The Ribbon Parameterized XSLT List View Web Part A Custom Site Page JavaScript/jQuery Demo 2.1: The OOB way Demo 2.2: with a little customization applied www.us.sogeti.com 13
  • 14. Local Touch Global Reach A few words about packaging and deployment The Easy Way Implement solutions entirely in SharePoint Designer. Advantages: Can get a solution up and running very quickly Disadvantages: Not repeatable or maintainable The Right Way Build a solution package (sandbox or Farm) Advantages: Deployable to dev/test/production environments, Repeatable and maintainable Can leverage source control Disadvantages: Requires Visual Studio and a developer www.us.sogeti.com 14
  • 15. Local Touch Global Reach Demo 3 a more complex master-detail Ingredients: OOB SharePoint Form Custom Site Page HTML JavaScript CSOM www.us.sogeti.com 15
  • 16. Local Touch Global Reach Demo 4 tips and tricks for SharePoint Forms Faking a calculated field on a new or edit form Show/Hide fields and render as read-only www.us.sogeti.com 16
  • 17. Local Touch Global Reach Demo 5 an Enhanced Lookup experience The problem: Users need to perform filtering on lookup fields and show related fields other than title. Also, provide a type-ahead interface. Implemented with 100% JavaScript The idea is the hardest part www.us.sogeti.com 17
  • 18. Local Touch Global Reach Demo 6 showing workflow detail inline with the form Common complaint: I have to go to a different place to see workflow data. We can solve this with some creative DOM manipulation by screen scraping the workflow tasks page www.us.sogeti.com 18
  • 19. Local Touch Global Reach Putting it all together: Demo 7 Document Dashboard View document metadata Download/View document View related defect data View append only comments inline View workflow history View version history all in one view???? NO CUSTOM CODE www.us.sogeti.com 19
  • 20. Local Touch Global Reach Summary Custom server-side code comes at a price in terms of administration, development, and user experience. When developing solutions for SharePoint, custom code should be the LAST option, considered after all other possibilities have been exhausted. SharePoint provides a wide array of options for building custom tailored solutions that dont impact the farm. Rule of thumb: If you can dream it (and you can access the data), then you can do it! www.us.sogeti.com 20
  • 21. Local Touch Global Reach Thank you www.us.sogeti.com

Editor's Notes

  • #6: This is Bob. Bob is the resident developer at his organization. He mainly develops web applications in ASP.NET, and hes pretty good at it. His organization has just decided to deploy SharePoint, and Bob has been charged with developing applications on this new platform. Bob is an Accidental SharePoint Developer.Bob does some research, and he discovers that SharePoint is really an ASP.NET site, and he learns that he can leverage his existing ASP.NET skills to build SharePoint solutions. So in Bobs mind, every development task he takes becomes a User Control wrapped in a Web Part.By approaching SharePoint development in this manner he is limiting the options available to him to build solutions in SharePoint. The solutions he will creates incur the highest cost to develop, the heaviest burden on the administrators, and the least functional user experience.
  • #7: In this example, Bob has to display some SharePoint data on a page. For some reason he has to provide functionality not available in the OOB list view page. Maybe he needs to filter and sort in a specific way. Maybe he needs to provide a link to related data. Maybe he needs to show workflow data inline with the list data. Bob doesnt know all of these use cases can be handled through standard SharePoint UI elements with some customization.
  • #9: Also, custom branding solutions and farm-wide resources like jQuery or custom application pages would be good candidates for farm-based deployments
  • #10: SharePoint provides a robust user experience right out of the box. List views provide dynamic as well as static filtering and sorting. Every entity in SharePoint comes with custom forms right out of the box. Complex fields like Managed Metadata and People fields come with rich functionality built in. The ECB and Ribbon provide launch points for the user to perform more advanced actions on the data.Yet, SharePoint rarely solves everyones unique business needs right out of the box. In particular, SharePoints recognition of relational, or parent-child data, is nonexistent. There is no notion of the connectedness between the items of data in the SharePoint interface. The lookup column is perhaps the most glaring weakness in SharePoints structure.
  • #11: We have seen that Microsoft has provided a great deal of OOB stuff upon which SharePoints interface is based. Weve seen that there are always shortcomings when this interface is applied to real-world business scenarios.Fortunately, Microsoft has provided hooks in each of the UI elements, upon which we can hang custom solutions. These customizations enable us to avoid re-inventing new solution, and simply extend the existing building blocks we have at our disposal to create dynamic, appealing, and functional solutions tailored to the way our customers do business.
  • #12: One example of how server code can create problems that JavaScript cannot: Recently I was called in to support a SharePoint application that was encountering some bugs. When I saw the code I discovered that the entire solution consisted entirely of about 30 visual web parts that is, custom server controls deployed to the server, written in C#.Some of these web parts were written by very inexperienced developers who, because they didnt understand how state management worked in ASP.NET, declared some variables as static, so their values would be available across postbacks. Some of these static variables happened to be collections, and every time the page was requested, items were added to this collection. But static variables are never cleaned up, so these collections grew and grew until they halted the entire server, until the admin had to reset IIS and the problem abated, temporarily.JavaScript can never do this because it runs on the client, not the server. The very worst a horribly-written JavaScript app can do is crash the users browser.
  • #13: The most common stuff in the box we can use to build customized, no-code SharePoint solutions. jQuery is not an OOB SharePoint item but it is a defacto standard for web development, in my opinion.
  • #14: For this demo our requirements are to manage a master-detail scenario using OOB SharePoint components. We can use list views and a little custom JavaScript to make this happen.
  • #15: Packaging and deployment are a critical concept to understand, but for the purposes of this talk I am just going to lightly cover them. There are two ways to build these custom solutions, the easy way and the right way.The Easy Way involves using SharePoint Designer, and essentially the development is done in Production. This is clearly a poor practice form a software development perspective, but a LOT of companies do business this way, even big ones.The Right Way is marginally more difficult that the Easy Way but requires Visual Studio and a deployment process.
  • #16: ** include custom child list elements as custom-rendered html elements using CSOM to query data and add items. Expose a hyperlink to new item form alongside.
  • #17: Use Case: We have a Total Invoice Field that is calculated by the sale price, shipping charge, and the tax. This isnt displayed in a new or edit form, but we can fake it by using jQuery to manipulate the DOM and insert the calculation into the table. We also have a requirement to make the Project lookup field read-only. We can also do that quite easily with jQuery.
  • #18: Lookup fields are one of the most frustrating user experiences in SharePoint. They cannot be configured at all. Using JavaScript however we can hide the OOB lookup control and display a custom interface, and implement the functionality we want. We also retain the functionality to the hidden OOB lookup control.
  • #19: A common complain from clients is that you cant show workflow task data inline with the list item data. If you know how to manipulate the DOM with jQuery though, you can easily mix and match UI components form different pages in one place.
  • #20: If we consider what weve discussed in light of these requirements, we can see that this is all stuff weve already seen. View metadata and view or download the document? A standard list view does that. View related data? A Parameterized list view will do that.We know that append-only comments, workflow history, and version history live in web pages elsewhere on the site, so if we can construct the urls to fetch these pages, we can grab that markup. It turns out we CAN get those urls, so the only thing left to do is implement the techniques and figure out how to stuff all this data into one page.