 |
| Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
| Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
| Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
|
 |
|
|
|
|
|
Home > Support > Blog
|
|
7/14/2008My apologies for the delay between blog postings. Between building the next version of our product (details are coming soon, stay tuned!), a trip to the United Kingdom, the 4th of July holiday here in the United States, giving demos, and helping customers, I haven't had as much time to blog as I'd like.
New Samples
I have two new things to talk about today. First, many of you have been asking us for sample projects, and today I'm pleased to make available approximately 275 new sample projects for download. These sample projects cover most of the tasks that ship in the current version of Kivati, and are intended to help you see how to use a specific task rather than address a specific problem with a solution. Thus, if you've been wondering how to use some of the more arcane tasks we ship with, this is definitely your ticket.
The samples we're providing are actually based on some of our build verification tests (BVTs), so in a way, these are some of the same tests we use to verify that the product is working correctly before we ship. There are a few caveats, however:
- These samples are provided AS-IS with no warranty or supported offered. Consult the Kivati end user license agreement for more details and legalese.
- Because these are based on our BVTs and not the actual BVTs, these haven't gone through a full test pass, and you may find problems or bugs. See below for more information on that.
- Be careful running these projects on a live portal. While most of these samples create a site and perform their functions under that site, some samples need to operate on the entire portal or on the machine itself. I strongly recommend that you look at the project before you blindly run it, and run it on a development machine that you don't care about.
- Some projects require some sort of setup steps to run. Generally, these are indicated by a test file or the presence of a small console application to run to set up a scenario. For example, many of the tasks that deal with security, users, or groups require some local users to be created - for these tasks, you'll find a console application that can help create the scenario.
- Some projects install solutions, features, or web parts. In nearly all cases, these solutions or features are non-functional; you'll need to provide a solution or feature of your own to see results.
- Because these projects are based on our BVTs, they have some design patterns that you generally may not find in real projects. For example, most of these projects will try to delete and create a site to run the "test" on, and will obviously produce a warning when the site doesn't exist. Another good example is that some projects close and reopen objects for verification purposes. You may wish to remove some of the tasks that do these types of activities if you are going to use these samples on another project.
Click here to download the samples [1,960kb, 7.14.08].
I'm definitely interested in your feedback on these. In particular, if you find a bug or a problem with one of the samples, let us know and we'll try to update them. As well, please continue to let me know what kinds of samples you'd like us to produce - I can't promise we'll do all of them, but hopefully we can address most of them!
New Templates
Along the same lines, I'd also like to announce some of the new project templates we're shipping in the next version of Kivati. As you may know, we're adding support for SharePoint's web service API, so some of these templates are built for that set of new tasks. Some of these templates you can also find on this blog. Here's the current list. Items with a * are new to the next version:
Aggregates
SharePoint (Object Model)
- Bug Tracking System
- Content Management Site
- *Delete Problem Web Parts
- *Kivati.com Home Page
- *Site Column Creator
- *Site Data Load with Site Columns
- Sites from Spreadsheet
SharePoint (Web Services)
- *Create Content Type
- *Get Content Type XML Definition
- *Get Field XML Definition
- *Security Samples (add group, add user to group, and grant explicit permissions to user)
- *Site Data Load with Site Columns
- *Sites from Spreadsheet
This list may change between now and the next release, but this should give you some idea of what we're working on.
As always, my email address is jnichols@kivati.com if you'd like to get in touch or send feedback. 6/20/2008
We've had a number of requests for a sample that shows how to populate site data in SharePoint in a bit more depth than our site creator demo. Well, ask and you shall receive - here's a sample that demonstrates how to:
- Create site columns
- Create sites
- Create lists
- Add the site columns to the lists
- Add data to the lists
The sample works by reading its data from two Excel spreadsheets included as resources in the project. You could quite easily modify the sample to read data from SQL server if that's what is required for your scenario. This project also nicely demonstrates how to use some of our conditional logic containers to take actions based on a set of conditions.
To download the sample project, click here. Please note that you will need to install Hotfix 0 in order for this project to compile (you can obtain Hotfix 0 from your My Account page).
The sample works in two phases. First, site columns are created on the site collection. This is accomplished by reading the definition of the site columns out of sitecols.xlsx and using that data to create the columns. I've also included support for choice columns. If the project detects that the column type is "Choice", then it looks for a sheet in the workbook with the same name as the field and reads the available choices from that sheet (take a look at "MyTestChoice" for an example). This is certainly not the only way to do this, but it's a pretty easy approach.
After site columns are created, the project then creates some sites and lists based on the data defined in sites.xlsx. The sheet "Sheet1" defines the sites, and also contains a column to specify which sheet contains the list definitions for the site (named "ListSheet"). For example, Site A uses a sheet named "ListSetA" to create its lists. Based on the list sheet, the project reads the lists to create. Similarly to how sites and lists are related, the list table contains two columns - ColSheet and DataSheet - that define the sheet that contains the column and data definitions, respectively.
The task that loads item data into a list item is worth mentioning. It uses a transform called Convert Data Row to Field Data that converts an entire data row out of a data table into the field data that is used to set the fields in a list item. This is a really powerful transform that can really simplify how you build data load projects, so definitely check it out.
As always, there are a number of ways that this sample could be improved. One obvious thing to do would be to add the site columns to content types and then add content types to the list. I may demonstrate that in another blog posting, but it would be a pretty straightforward change to make. Another way the sample could be extended would be to support lookup columns, or to support adding columns to the lists that weren't site columns.
If you have any questions or want to suggest a topic for a future sample, please let me know - my email address is jnichols.NO.SPAM@kivati.com (obviously remove the no spam part). 6/17/2008
I'd like to announce the availability of Hotfix 0 (released 6.17.08). This hotfix addresses a handful of issues in the SharePoint 2007 Task Provider library that were discovered by users and by our internal testers.
To install the hotfix:
- For new Kivati users: No special action is necessary. When you download Kivati from My Account, the hotfix is included in the setup packages.
- For existing Kivati users: When you log in to My Account, you will see a Hotfix 0 entry in the My Downloads section. Download the ZIP file and extract it to your providers folder. You can also download the full setup packages if you wish.
This hotfix contains updates to the following files:
- Kivati.Providers.Wss2007.Tasks.dll (6.16.08, 644,400 bytes, version 1.0.3509.653)
- Kivati.Providers.Wss2007.Tasks.XmlSerializers.dll (6.16.08, 681,264 bytes, version 1.0.3509.653)
As always, please let us know if you find bugs or have suggestions or feature requests by emailing support@kivati.com. Thanks! 6/3/2008
I’m Tyler Marlatt, Lead Developer for Kivati Software, and I’m going to show you how to build a simple task provider using the Kivati SDK. It may sometimes be necessary to perform an IISReset after a Kivati project executes, and the task provider I’ll demonstrate will do that for you.
Before getting started, please be sure you have a copy of the Kivati SDK and a copy of Kivati Studio installed on your development computer. You should also read the section on Provider Basics and Tasks so you are familiar with how the Kivati task system works.
The basic operation of this task is very simple. It will first create a ProcessStartInfo object to start iisreset.exe and pass parameters as required to the process. Then, the process will be started and the task will wait for the process to complete. The task we build will facilitate this process along with providing parameters to iisreset.exe to control its behavior.
The first step to take when building a task is to define the task class. I’ve stubbed out the class you’ll need in Listing 1, along with a basic IProvider implementation. Note that I’ve derived the class from MarshalByRefObject ; this is highly recommended for any tasks that you create.
Generally I like to define the task’s data and properties next, before writing the Execute method. This process helps me think about how the user will end up using the task rather than the easiest way for me to build the task. Different people have different styles of building tasks though so you may find a different method works better for you.
In Listing 2 I’ve defined the private data that the task will store as well as properties to interface with that data. It is important that you use public properties and not public fields as Kivati’s task system will not serialize fields. Be sure to define a set method for properties that the user is supposed to set, and only define a get method for other properties. This will make sure that the task designer works correctly with your task.
It’s also really important to provide user help in the form of Category and Description attributes on properties so that the user knows how to use your task. In particular, if you have a property that depends on another property, such as the RemoteComputer property depending on the Local property, you should call that out in the Description attribute.
After the task properties have been defined you can then write the task’s Execute and Prefetch methods. My code for this is shown in Listing 3. I always begin the Execute method with a log entry so that the user knows the task has started. The next step in this Execute method is spawning the iisreset.exe process and waiting for it to complete, and the code for that is pretty simple. After that finishes I emit another log entry so that the user knows the task has finished. Emitting the log entries is important for you as the task author as well as it can help you identify where a task has failed. This task doesn’t have a Prefetch method so I’ve left it blank.
The last step is to build and test the task. After you build the task DLL, copy it to your providers folder and restart Kivati Studio. You should then be able to add it to a project and verify that it works. A good way to quickly test this task is to first set it to stop IIS and then verify that IIS was stopped using IIS’s manager tool. Then you can set the task to start, rerun the project, and verify that the task correctly started IIS.
You can download the entire IISReset task in one file by clicking here. 5/30/2008
Today I'm going to show you how to use Kivati Studio to quickly perform an administrative task, in this case, deleting problem web parts.
Most of us have, at one time or another, deployed a web part that later turned out to have a problem or threw an exception. Oftentimes, this can be fixed by simply uninstalling the web part assemblies, but what if users have already added the web part to web part pages on your site? If you don't delete these web part instances, users can encounter errors. You could of course manually delete these problem web parts, or you could use Kivati Studio to do this for you.
I've prepared a sample project to go along with this post that demonstrates this. You can download the project by clicking here. Extract the downloaded file using a ZIP program and open the project in Kivati Studio.
For this task, we want Kivati to perform the following conceptual steps:
- Look at every site on the portal.
- On every site, look at the web part pages on the site. If it's a team site, we'll look at Default.aspx (the main page of the site). If it's a publishing site, we'll look in the Pages library.
- On every web part page, look at the web parts.
- On every web part, look to see if the web part is the one we want to delete. If so, delete it.
Translating these steps into a Kivati project is straightforward. I began by adding a Site Repeater Container to handle repeating over each site. This is a very powerful container that can work well for you in a variety of situations - besides this situation, I've used it to batch add lists on sites, remove every site on the portal, change site titles, and other things.
Inside the site repeater, I added a bit of logic to determine what type of site the container was examining. To keep things simple, I only handle team sites (STS) and publishing sites (CMSPUBLISHING) but you could pretty easily expand this logic. The reason I need to know what kind of site I'm looking at is each of these sites store web part pages in a different way, so I need to handle this differently.
Once I've determined the site type, I can get to the business of grabbing web parts. The only real difference between the two containers that handle this (named IsPublishingSite and IsTeamSite in the sample) is that IsPublishingSite has an extra step to loop over the files in the Pages library. Otherwise, it's simply a matter of opening up the web part page and fetching the properties. I'm comparing the title to the title of the web part I want to delete, and if the title matches, I delete the web part.
To try this sample for yourself, create a team site and publishing site (or several copies of each) on your portal, and add some RSS Viewer web parts to your sites. Then, run the project. You should see any web part titled "RSS Viewer" disappear after the project is run. Note that I've made the title to delete a runtime variable, so you can change this at runtime using the Execute Advanced option (dropdown under Execute on the Home tab), in project properties, or by generating a wizard setup, where you'll be prompted for the web part to delete each time you run it.
There are lots of ways you can improve or modify this sample for your needs. Here are a few ideas:
- Support more site types. As mentioned, I only provided support for team sites and publishing sites, but you could easily support more.
- Support web part pages in document libraries. This would enable you to remove web parts off of pages other than Default.aspx on team sites.
- Support loading web part page information from a database or spreadsheet. This sample tries to discover web part pages. Depending on your scenario, you may find it better to load the URLs of pages into a database or spreadsheet and use that as a basis for deleting web parts. The Excel site creator sample is a great starting point if you want to do this.
- Support deleting web parts by type. Although there is no property on Get Web Part Properties to return the type, you can cleverly get it by adding a Convert To String transform on a chained property from CurrentWebPart on the web part repeater.
- Support partial matching of web part titles/types. You can easily do this with the String Contains task, or you could do something clever with some of the other tasks.
Hopefully this sample gives you an idea of some of the things you can do with Kivati besides deploying entire solutions. Kivati can be a great tool to quickly perform tedious or otherwise mind-numbing tasks, as this project shows.
Speaking of the sample project, if you enhance the project and come up with something cool that you'd like to share, I'd love to see it - you can email projects to me at jnichols.NO.SPAM@kivati.com (please remove the no spam part) and if it's interesting enough, you might see it posted here as a follow up for other readers. You don't have to send me an enhanced version of this sample either - if you've come up with a neat project that's unrelated to this, I'd be happy to take a look as well! 5/23/2008
When you're building a product, at some point you have to draw a line (or more) that defines what your product is and is not. I'm not just talking about features and functionality, but also about the design of the product and the philosophies that drive that design. I'm starting a new series of posts about the design and philosophy of Kivati, and hopefully you'll find it helpful to read about the design decisions we made and why we made them. At the very least, hopefully it will be fun to read. :)
The first topic I want to address on this subject is the issue of when Kivati projects run. Do your projects run once when you deploy your solution, or do your projects run over and over again as part of the solution? Put another way, you're used to using Visual Studio and similar tools to build web parts - can you build web parts using Kivati, and is Kivati a replacement for this process of building custom components?
We made a very early design decision that Kivati is first and foremost a deployment engine. Although you can technically build runtime components with Kivati (more on that in a minute), we wanted to focus on the scripted deployment aspect of solution development. Our reasoning behind this was pretty simple - people are used to building custom components in Visual Studio. The process generally works well and people like it. What doesn't work so well is when it comes time to deploy your entire solution - not just web parts or other code assets, but content, site taxonomy and infrastructure, and other components. That's where we come in, and we try to work nicely with your other tools to help you be more productive in the end.
Could you someday see custom component creation as part of Kivati? Possibly, but we want to get deployment right first. What you see in the product today is just the beginning of our deployment strategy - we've got a lot of really cool ideas and things in the works that we want to tackle before we try to tackle other problems.
This doesn't mean that you can't build custom components with Kivati. In early betas, we actually shipped an output type that emitted SharePoint event receivers and a feature.xml as part of your compiled project output. It was sort of a pseudo-workflow type of solution, mainly intended as a technology demonstration and test bed while we were building our compiler. It's possible this component could come back in a future release as well (if you think this is cool send me an email and "cast your vote", so to speak).
Hopefully this sheds some light on this aspect of the product. Please feel free to send me an email if you have questions that I didn't answer, suggestions for other topics you want me to cover, or other feedback.
5/19/2008
Today, Kivati Studio offers a great value for managing SharePoint's core object model. We support a wide selection of SharePoint functionality straight out of the box with approximately 400 tasks. Of course, we're always looking at what additional functionality we can offer our customers, and to that end I'd like to share with you our product roadmap to give you an idea of what we're working on.
- SharePoint Web Services tasks. The SharePoint web services enable programmatic control of SharePoint from any computer, even those without SharePoint. With the web services tasks, you'll be able to utilize the power of Kivati Studio from any computer and without running projects directly on the SharePoint box. This is particularly important for scenarios in which you may not have access to install or run software on the box. We're planning to release these tasks in Summer 2008.
- SharePoint Administration Object Model tasks. Our current task offering that ships with Kivati Studio covers core SharePoint functionality, such as creating sites, lists, and other content. This provider pack will extend this support to administration tasks, such as configuring the farm and SSP. We're planning to release these tasks late in 2008.
- Version 2.0. I can't tell you much about what we're working on for version 2.0 at the moment, but I can say that it's extremely compelling and will definitely change the way you think about SharePoint solution deployment. We're planning to release version 2.0 sometime in the first half of 2009.
- Beyond 2.0. We have several other releases planned version 2.0. I'll provide more details when the time is right.
The first two releases on this list (web services and administration tasks) will be provided as task add-on packs which you'll be able to purchase and add to any Kivati Studio installation. We're also planning on splitting the current (object model) tasks into a task pack as well so you have a choice of which task packs you purchase. I don't have specific pricing or SKU information beyond this at the moment, however, but will certainly provide that as we get closer to release.
For those of you that purchase subscriptions, you'll receive these releases when they are available (as long as your subscription is still current). If you don't have a subscription, please consider purchasing one - I personally think that the value is tremendous, considering that you'll get Kivati Studio, Kivati Server, SharePoint object model tasks, SharePoint web services tasks, and SharePoint administration tasks in 2008 alone. You can find more information about our subscriptions here.
One last point about our releases - we depend on your feedback to make the products that YOU want. If you have feedback, feature requests, or other comments, please send us an email at support@kivati.com and let us know what you'd like to see. I can't promise that we'll get every request in, but we'll certainly try! 5/16/2008
We've put together a few interesting articles in our Knowledge Base that cover some template names and IDs used by SharePoint internally. These lists can be extremely useful when you're building SharePoint solutions.
So far, we've put together these lists:
If there are any other lists of this type you'd like to see, send me an email (support@kivati.com) and we'll try to put them together in a future blog post.
I'm Jack Nichols, product manager for Kivati Software, and I'd like to personally welcome you to our web site and our blog! On this blog, you'll find a variety of content related to Kivati, including:
- Best-practices
- Samples
- How-tos
- Q&A
- Case studies
- Information sheets
- And more!
In addition to me, you'll also see posts from Tyler Marlatt, one of our lead developers, as well as other members of our team, and even some of our customers and partners.
One resource I'd like to make everyone aware of right away is our Knowledge Base. We update it frequently (usually at least once a week) and usually try to write KB articles about bugs and problems customers are having. Definitely check it out as it's a great resource for both Kivati and SharePoint questions.
Finally, if you have a suggestion about a KB article or topic you'd like to see covered in our blog, you can email our support alias at support@kivati.com. I hope to see some of your suggestions soon!
Thanks for checking out our blog, and thanks for using Kivati! | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | FileType | xsn | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.2 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.3 | 255 | | Edit in Browser | /_layouts/images/icxddoc.gif | /support/blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser | 0x0 | 0x1 | ProgId | InfoPath.Document.4 | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsx | 255 | | View in Web Browser | /_layouts/images/ichtmxls.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 | 0x0 | 0x1 | FileType | xlsb | 255 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsx | 256 | | Snapshot in Excel | /_layouts/images/ewr134.gif | /support/blog/_layouts/xlviewer.aspx?listguid={ListId}&itemid={ItemId}&Snapshot=1 | 0x0 | 0x1 | FileType | xlsb | 256 |
|
|
|
|
|
|
|
|