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