Jeroen Derde's Blog

My Software Engineering Universe

MOSS lockdown mode

clock July 31, 2009 19:41 by author Jeroen Derde

 

 

 

Lockdown mode is a feature that you can use to secure published sites. When lockdown mode is turned on, fine-grain permissions for the limited access permission level are reduced. The following table details the default permissions of the limited access permission level and the reduced permissions when lockdown mode is turned on.

  

 

Permission Default Lockdown

List permissions: View Application Pages

x  

Site permissions: Browse User Information

x x

Site permissions: Use Remote Interfaces

x  

Site permissions: Use Client Integration Features

x x

Site permissions: Open

x x

 

 

 

 

 

 

 

 

 

Enable lockdown

stsadm -o activatefeature -url <site collection url> -filename ViewFormPagesLockDown\feature.xml

Disable lockdown

stsadm -o deactivatefeature -url <site collection url> -filename ViewFormPagesLockDown\feature.xml



3th Party SharePoint Tools

clock July 30, 2009 20:50 by author Jeroen Derde

A little more than a year ago Bill English wrote a post about 3th party MOSS tools that I just came across.
It's an old post, but still a nice read if you are interested in adding functionality to your MOSS deployment in one of the following categories:

  1. Collaboration
  2. Security, User Account Management and Permissions Management
  3. Search and Relevance
  4. Workflows
  5. Document Administration
  6. Upgrade and Moving Content

The post can be found here: http://admincompanion.mindsharp.com/BillBlog/Lists/Posts/Post.aspx?ID=75



PDFtoWord

clock July 24, 2009 00:33 by author Jeroen Derde

 

Today I got a PDF document from a client that I needed to fill out and hand back in digitally. The PDF did not feature any inputboxes so editting the PDF was not an option. I found myself pondering the remaining options:

  1. Print --> Fill out --> Scan --> Hand in.
    I didn't really like the first option, I'm in IT....I dont write stuff .
  2. Retype the entire document and fill it out digitally, and hand it back in.
    I'm in IT, i don't retype stuff.
  3. Convert the PDF back to word.

So that only left me with option 3, converting the pdf to word.
There are many word to pdf converters out there, but I never really looked for something that does the opposite.

A small Bing resulted in www.pdftoword.com

After uploading the PDF and entering my email address, I got an e-mail in no more than a minute containing my PDF as a Word document.
I was dumbstruck by the quality of the conversion of the form, so I uploaded another 77 page PDF and had that converted aswell.
Even this large document with lots of tables was converted perfectly.....well almost....

  1. Footer and Header recognition: footers and headers are not recognized, and are just text on each page. It would be really nice if these could be recognized and put into the word document as a footer or a header.
  2. Heading and TOC recognition: It would be nice if headings (chapters and paragraphs) could be recognized by PDFtoWord. Then they could also create a TOC instead of just text.

Hope someone finds this service usefull to.

 



WittyTwitter TwitterLib

clock July 14, 2009 23:34 by author Jeroen Derde

 

Found this .Net wrapper for the Twitter API called TwitterLib. It's part of WittyTwitter, but can also be used on it's own.

Code can be found here. http://wittytwitter.googlecode.com/svn/trunk/Witty/TwitterLib/
Nice if you are planning on building a twitter enabled app.

 

 

 



ComplexModelBinder

clock July 10, 2009 01:29 by author Jeroen Derde

Today I was experiencing a problem in the MVC application I am currently developing.

First some information:

Model: ContactDataModel
ContactDataModel implements interface IContactData. This is because the related typedview Step1 contains a partialView that inherits IContactData.
this way we can reuse the partial view simply by having each model, that needs to use the partialview, implement this interface.

 

Interface IContactData


public interface IContactData
{
    ContactData Contact { get; set; }
}

 

Object ContactData


public class ContactData
{
    [Required]
    [StringLength(200)]
    public string Voornaam { get; set; }
}

 

View: Step1
This view inherits from ContactDataModel


...
<h2>ContactGegevens</h2>  
<% Html.RenderPartial("ContactDataUserControl"); %>
...

 

Partial View: ContactDataUserControl
This view inherits from IContactData


<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<QNH.Interfaces.IContactData>" %>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
    <legend>Fields</legend>
    <p>
        <label for="Contact.Voornaam">
            Voornaam:</label>
        <%= Html.TextBox("Contact.Voornaam")%>
        <%= Html.ValidationMessage("Contact.Voornaam", "*")%>
    </p>
.........more fields....form closed

 

Controller: MyController


[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Step1( ContactDataModel contact )
{
    ....
}

 

The "POST" method "Step1" on MyController was recieving an empty ContactDataModel object. If I changed the the Step1 method to recieve the FormCollection instead of the Model object then my values would be present. After this I thought: what object is responsible for mapping the formvalues in my view to my model object. The answer is: the ComplexModelBinder.

The main thing to remember when using the ComplexModelBinder is the naming convention of your controls in the form. Because it uses reflection the ComplexModelBinder is expecting the Class Name + “.“ to be appended to the property name. If you are using the ComplexModelBinder and not prefixing the Class Name to the name of the Property, you will just get null values for your properties.

This means that in my partial view were I was using Contact.Voornaam I needed to use ContactData.Voornaam.This also means that I needed to change the name of the property in my interface to ContactData, because else it would not be recognised.

New Interface: IContactData:


public interface IContactData
{
    ContactData ContactData { get; set; }
}

New Partial View: ContactDataUserControl
This view inherits from IContactData


<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<QNH.Interfaces.IContactData>" %>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
    <legend>Fields</legend>
    <p>
        <label for="ContactData.Voornaam">
            Voornaam:</label>
        <%= Html.TextBox("ContactData.Voornaam")%>
        <%= Html.ValidationMessage("ContactData.Voornaam", "*")%>
    </p>
.........more fields...form closed
 

 

I really hope this helps out someone else. Happy Coding.

 




Month List

Calendar

<<  September 2014  >>
MoTuWeThFrSaSu
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

View posts in large calendar

Sign in