none
Discussion board template of SharePoint 2007 not working properly RRS feed

  • Question

  • Use case 1 – Discussion board to suggest change to documents

     User adds a suggestion. The discussion board needs fields like module name, document name, section name and reason for a change etc.

     

     Problem 1 – When I try to add fields to the discussion board – When a user wants to post a reply to a suggestion, user screen shows the new item form and all fields instead of just a reply or comment field. Need help how can I ensue user only sees reply or comment field?

     

     Problem 2 – If I make these changes in the discussion board template through SharePoint designer 2007 and later if we plan to upgrade to SP 2010. Do I have to redo the changes I did on old discussion board or will upgrade take care of migration of the changes to new discussion board template available with SP 2010? 

     

     Thanks,

    Pari

    Wednesday, August 11, 2010 1:22 PM

All replies

  • Answer 1 - You should customize the EditForm.aspx using SharePoint Designer.  For that, start here:  http://www.cjvandyk.com/blog/Articles/How%20do%20I%20-%20Customize%20the%20NewForm.aspx%20or%20EditForm.aspx%20of%20my%20SharePoint%20list.aspx

    Answer 2 - SP2010 should migrate the UI customizations just fine.

     


    I trust that answers your question...

    Thanks
    C

    http://www.cjvandyk.com/blog
    Wednesday, August 25, 2010 9:40 PM
    Answerer
  • Hi,

    In Discussion board, we have two content types present: Discussion and Message.

    In your case,

     when a user is adding a suggestion, he/ her is creating an item of type "Discussion" and when user is replying, is creating an item of type "Message".

    In SharePoint, when we create a new column (e.g. module name, document name) it gets added to all content types unless we uncheck "Add to all content types" checkbox on "Create Column" page.

    To remove column from Message Content type :

    1. Go to the "Settings" page of Discussion Forum.
    2. Under "Content Types", click on "Message".
    3. Now, click on the column name(e.g. module name) which you want to remove.
    4. Click on "Remove" button.

    Hope this helps.

    Regards.

    Thursday, August 26, 2010 6:58 AM
  • Hello Sparijat,

    If you take a look at the URL when you're creating a new discussion item it should look something like this:

    http://someServer/Lists/Discuss/NewForm.aspx?RootFolder=/Lists/Discuss&ContentTypeId=0x012002005E3F78CB0D43DF42A81963DD6A65236B&Source=http://someServer/Lists/Discuss/AllItems.aspx

    The ContentTypeId url query string is what tells the single NewForm.aspx what to render. The ContentTypeId above matches my Discussion content type.

    Next, if you take a look at the URL when you reply it should look something like this:

    http://someServer/Lists/Discuss/NewForm.aspx?RootFolder=/Lists/Discuss/Test&ContentTypeId=0x0107&DiscussionParentID=1&Source=http://someServer/Lists/Discuss/Flat.aspx?RootFolder=/Lists/Discuss/Test&FolderCTID=0x012002005E3F78CB0D43DF42A81963DD6A65236B&TopicsView=http://someServer/Lists/Discuss/AllItems.aspx

    This also has a ContentTypeId url query string. It corresponds to the Message content type.

    You can modify the appropriate content type as was suggested to allow you to have certain columns available only for Discussion content types and for Message content types.

    The Discussion content type = The first post that creates the discussion topic.

    The Message content type = Replies.

    If you wanted to do a lot of customizations to the form and needed to use the DataFormWebPart (Custom list form) you could insert two DFWP on the page and then leverage the URL query strings to display only 1 web part.

    You could also create multiple forms and try to set supporting files for the two content types. Here is the XSL trick for getting that to work.

    1. Find out the id's for each content type by clicking "New/reply" on the list. In the URL, look for the ContentTypeId and the value it's set to.

    Like so:

    In this example, it's set to 0x01002F0B85EC9C1DF64597568D219570A466.

    1. On the NewForm.aspx, insert a Custom List Form for each content type.
    2. On each Custom List Form, bring up the Common Data View Task Pane and click Parameters. Add a parameter called "contentType" and set the parameter source to be "Query String" and the query string variable to be "ContentTypeId".
    3. For each Custom List Form, go into code view and put an <xsl:if> statement around each call-template, so that it only displays if the current ContentTypeId is
    its own. Like so:

    <xsl:template match="/">
    <xsl:if test="$contentType = '0x0107'">
    <xsl:call-template name="dvt_1"/>
    </xsl:if>
    </xsl:template>

    Now, when a user clicks "New", indeed, it will always go to NewForm.aspx, but the Custom List Form that actually displays is based on the ContentTypeId. So, the Custom List Form that is shown is valid, and the others are hidden.

    The easiest option is to just go to the list settings and modify the appropriate content type and just keep everything as is.


    Regards,
    Dalibor K
    Microsoft Online Community Support
    Saturday, October 2, 2010 9:50 PM