spUpdatePageContent

Parameters

Parameter Parameter Type Mode Description
@ID int IN
@PaneName nvarchar(256) IN
@ContentOrder int IN

Definition

Copy


CREATE    PROCEDURE dbo.spUpdatePageContent
(
@ID int,
@PaneName nvarchar(256),
@ContentOrder int
)
AS

DECLARE @SitePageID int
DECLARE @PreviousPaneName nvarchar(256)
DECLARE @PreviousContentOrder int


    SELECT 
    @SitePageID = SitePagesID, 
    @PreviousPaneName = PaneName, 
    @PreviousContentOrder = ContentOrder 
    FROM PageContent 
    WHERE 
    ID = @ID


    if @PaneName = @PreviousPaneName
    begin    

          if @ContentOrder = @PreviousContentOrder
            begin
            /*Return - Nothing has changed*/
                return
            end
          if @ContentOrder > @PreviousContentOrder
            begin            
            /*SWAP Update the record and then decrement   
            -1 the index at this one*/

            UPDATE PageContent SET
            ContentOrder = ContentOrder - 1 
            WHERE
            SitePagesId = @SitePageID
            AND
            PaneName = @PaneName
            AND
            ContentOrder <= @ContentOrder
            AND
            ContentOrder > @PreviousContentOrder

            UPDATE PageContent SET
            ContentOrder = @ContentOrder
            WHERE
            ID = @ID

            end        


          if @ContentOrder < @PreviousContentOrder
            begin
            /*Update the record and then increment  
            +1 the index lesser to this new one*/


            UPDATE PageContent SET
            ContentOrder = ContentOrder + 1 
            WHERE
            SitePagesId = @SitePageID
            AND
            PaneName = @PaneName
            AND
            ContentOrder < @PreviousContentOrder
            AND
            ContentOrder >= @ContentOrder
            -- TRW - added the above 2 lines 12/05/05
            --AND
            --ContentOrder > @ContentOrder

            UPDATE PageContent SET
            ContentOrder = @ContentOrder
            WHERE
            ID = @ID

            end

    end

    else
    /*The update came from a different pane. We need to update those panels
    and decrement -1 all those contents with index higher than that one was
    also we need to increment everything in the new pane +1*/
    begin

        /*Update New Pane Orders + 1*/
        UPDATE PageContent SET
        ContentOrder = ContentOrder + 1 
        WHERE
        SitePagesId = @SitePageID
        AND
        PaneName = @PaneName
        AND
        ContentOrder >= @ContentOrder

        /* Update the Pane */
        UPDATE PageContent SET
        PaneName = @PaneName,
        ContentOrder = @ContentOrder
        WHERE
        ID = @ID

        /*Decrement the old pane -1  */
        UPDATE PageContent SET
        ContentOrder = ContentOrder - 1 
        WHERE
        SitePagesId = @SitePageID
        AND
        PaneName = @PreviousPaneName
        AND
        ContentOrder > @PreviousContentOrder


    end