Monday, November 23, 2015

Visual Studio Team Services Extensions from the Rangers

http://blogs.msdn.com/b/visualstudioalmrangers/archive/2015/11/18/visual-studio-extensions-from-the-rangers.aspx


With the Extensions feature going live this week as per the announcement during Connect, the VS ALM Rangers have been busy creating extensions. We have a total of 11 extensions that made it into the Visual Studio Team Services Marketplace when it launched, of which 4 are published under Microsoft DevLabs and the rest as community extensions. Here’s a little bit about them…

A list of DevLabs extensions:

Folder Management
Create new folders from the code explorer within the Team Web Access.
Team: Wouter de Kort & Abel Wang
Print Cards
Print cards from your backlog for use on a physical scrum board.
Team: Gordon Beeming (@GordonBeeming) & Robert MacLean (@rmaclean)
Test Case Explorer
An extension to explore test cases.
Team: Mattias Sköld & Mathias Olausson (@molausson + blog)
Work Item Visualization
Visualize relationships between work items from within the work item form.
Team: Taavi Koosaar (@melborp + blog + GitHub + email: taavik@melborp.net)

Wednesday, November 18, 2015

Full list of features for Visual Studio Team Services | Visual Studio TFS 2015

Use this end-to-end feature index to learn about all the features available to help you plan and track your projects and code, build, test, and release your software applications.

https://msdn.microsoft.com/library/vs/alm/overview/alm-devops-feature-index  

Wednesday, November 4, 2015

Fun with SharePoint 2013 workflows and custom outcomes

It looks like a bug but it makes sense that the Custom Outcome buttons do not appear if the two fields, Percent complete and the Task Status fields are hidden or they have been set to 100% and the task status is set completed.

This is some basic logic that Microsoft put in to make things easier to the normal users.   But i think this is killing the power users who are very knowledgeable with the workflow and process from the previous versions of SharePoint.

they should just remove this basic box or restraints put on to assist the users which Microsoft typically allowed the public to find way to put in rules and such but why only allow the customization of the workflow task form for Visual Studio and not SharePoint designer if they are going the route of dumb-ing down of the users with these silly rules but only allowing more advanced users with development knowledge to customize the workflow task form.

Interesting....

Also there is a bug in the workflow where the outcome variable in the task process is ordinal value instead of the string value of the custom outcome.
for example:
Approved
Canceled
Rejected
Re-Assigned

the values are returned to the task process outcome variable is:
0 = Approved
1 = Canceled
2 = Rejected
3 = Re-Assigned

This needs to be fixed. 

Tuesday, March 3, 2015

Sharepoint how to accept a blank choice after the user inputs a choice column value

So a user had encountered an issue of creating a choice column but they want to set it to blank but the system does not allow them to save the blank value.

The column is A choice type with Yes/No.

  • Require that this column contains a value:  No
  • Choices
    • Yes
    • No
  • Display choices using:
    • Drop-Down Menu
  • Allow 'Fill-in' Choices:  Yes
  • Default value:  can be left blank

The user is allowed to save Yes/No or blank since the field is not required but when a user saves a value then the user is not allow to clear the selection.

so to resolve this the key is to allow the 'Fill-in' choices option to YES.

then in the validation formula:
=IF([column name]="", TRUE, IF([column name]="Yes", TRUE, IF([column name]="No", TRUE, FALSE)))

so for example:  if a field is called Have Driver License then the formula would look like the following:
=IF([Have Driver License]="", TRUE, IF([Have Driver License]="Yes", TRUE, IF([Have Driver License]="No", TRUE, FALSE)))

Thursday, February 26, 2015

SharePoint 2013 timer job workflow to process items in a list: lessons learned

Here are some gotchas,   
  • could not get a null date filter to work 
  • only the request header, ResponseContent, and responseCode is needed to use the web service activity
    • Use HTTP Get
    • set header
      • ACCEPT:  application/json;odata=verbose
      • Content-Type: application/json;odata=verbose
      • not needed:  X-RequestDigest: $("__REQUESTDIGEST").val()
    • get d/results
    • the values for each items needs a parenthesis like Get (0)/fieldname 
  • not all fields are accessible from the normal json call for example:  http://yoursiteURL/_api/web/lists/getbytitle('ListTitle')/items
    • by default it will only return 100 so can add ?$top=5000
    • so you can call the web service to return all string by calling the web service with the url for each item:
      • ([%Variable: index%])/FieldValuesAsText/__deferred/uri  
        • This will be the url to call to return fields as text like the people names for emails, etc
  • A good way to view the fields for the json call that i used:
    • firefox
    • add-ons:  i used the following  
      • JSONView 0.9
      • Modify Headers 0.7.1.1
    • only thing to make this work is to click on the options on the Modify Headers options, then add the action Modify, the name is Accept, the value is application/json;odata=verbose
    • all you have to do now is just call the service and the json data will display in firefox. 
      • SWEET!
      • this is very useful for field names
  • Have fun folks.  
    • if questions, let me know.  this is one of the best new features of SharePoint 2013. 

Wednesday, January 14, 2015

SharePoint 2013 Hide upload and disable drag drop for document library

Add a script web part with the following:

<style type="text/css">
#Ribbon\.Documents\.New\.AddDocument-Large
{    
               display:none !important;
}
</style>
<style type="text/css">
td.ms-addnew
{    
               display:none !important;
}
</style>

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(function() {
    g_uploadType = DragDropMode.NOTSUPPORTED;
    SPDragDropManager.DragDropMode = DragDropMode.NOTSUPPORTED;
}, "DragDrop.js");

</script>