New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

Tasting a little dogfood, part 2 of...

As I mentioned... in particular order!  So lets continue, shall we?

  • It seems that the previously mentioned error on an empty HTML/Text module is related to some other errors as well... and both related to caching.  See the latest version of the HTML/Text module defaults the module's cache time to 600 ( 5 minutes ) which is VERY cool ( since nobody ever remembers to do that ).  But somehow the module caching is not working too will with the inline editing nor the initial creation of the default text.  If you edit the module once & save, the issue goes away.

    But alas, the HTML/Text module is having another very odd issue somehow related to caching.  Our project pages all have module descriptions which should be editable by the Project Leads.  However, we discovered recently that they could NOT edit them anymore?  They don't even get the action menu item that would let them try.  Enter caching again... for some strange reason, if you turn module caching back to -0- their permissions return.  Mind you, this is only affecting the HTML text module and users in roles with Edit rights to the module ( Page Admins work fine ).

    Lastly... I have not fully documented it yet, but have noticed some erratic behavior with edit-in-place and cache.  That is... if I go to the Edit page after having made a change in the edit-in-place... the OLD text is there?  Hmmm...
  • Most of the folder issues seem understood now.  However, we're on to new issues in the folder permissions.  Interestingly, there's some bad behavior left over from the 3.x versions and it appears a few items to tidy up still in 4.3.

    The 3.x versions weren't terribly consistent in honoring the folder permissions everywhere.  But in version 4.3 this is all being enforced... which is bubbling some issues to the top.  Couple things...

    >> First ( and this has already been corrected in the Vault ), the All Users roleid ( -1 ) was being assigned READ/WRITE access to every folder.  Oops.  Which would have meant that any poster in a forum could have uploaded files to your file system or, at a minimum, browsed to see where all your files were ( presuming the file picker was working... thats another story ).  Similarly... the Portal Admin role needed to have READ/WRITE access granted to it.  It had READ... but we had to go back and inject WRITE as well.  Thank you Charles Nurse for this bit of SQL which will take care of all the Portal Admin rights in your install:

    DECLARE @ReadPermissionID int
    DECLARE @WritePermissionID int
    DECLARE @AdminRoleID  int
    DECLARE @PortalID   int

    /* get the PermissionID for READ permissions on the SYSTEM_FOLDER */
    SELECT @ReadPermissionID = PermissionID
    FROM   {databaseOwner}{objectQualifier}Permission
    WHERE  PermissionCode = 'SYSTEM_FOLDER' AND PermissionKey = 'READ'

    /* get the PermissionID for WRITE permissions on the SYSTEM_FOLDER */
    SELECT @WritePermissionID = PermissionID
    FROM   {databaseOwner}{objectQualifier}Permission
    WHERE  PermissionCode = 'SYSTEM_FOLDER' AND PermissionKey = 'WRITE'

    /* Iterate through each portal */
    SELECT @PortalID = min(PortalID)
    FROM   {databaseOwner}{objectQualifier}Portals
    WHILE @PortalID is not null

    /* get the Administrator Role ID */
     SELECT @AdminRoleID = AdministratorRoleID
      FROM {databaseOwner}{objectQualifier}Portals
      WHERE PortalID = @PortalID 

    /* remove any records which already exist to avoid a duplicate key error on the insert */
      FROM   {databaseOwner}{objectQualifier}FolderPermission
      WHERE  (PermissionID = @ReadPermissionID AND RoleID = @AdminRoleID)
       OR  (PermissionID = @WritePermissionID AND RoleID = @AdminRoleID)

    /* give Administrators READ access to unsecure folders */
     INSERT INTO {databaseOwner}{objectQualifier}FolderPermission
      SELECT FolderID, @ReadPermissionID, @AdminRoleID, 1
      FROM {databaseOwner}{objectQualifier}Folders
      WHERE PortalID = @PortalID

    /* give Administrators WRITE access to unsecure folders */
     INSERT INTO {databaseOwner}{objectQualifier}FolderPermission
      SELECT FolderID, @WritePermissionID, @AdminRoleID, 1
      FROM {databaseOwner}{objectQualifier}Folders
      WHERE PortalID = @PortalID

    SELECT @PortalID = min(PortalID)
      FROM   {databaseOwner}{objectQualifier}Portals
      WHERE  PortalID > @PortalID

    >> Second... there's probably a real good chance that you have a lot of duplicate folder permissions.  I'm not 100% certain if this was introduced in 4.3 as a result of the folder duplication ( the "//" issues )... but it is possible to have a lot of basically duplicate entries in the FolderPermissions table.  We'll be introducing an index to keep that from happening in the future, but you can also run this handy SQL statement to delete your duplicates as well:

    DELETE FROM FolderPermission
    WHERE FolderPermissionID NOT IN (
     SELECT DISTINCT MIN(FolderPermissionID) AS FolderPermissionID
            FROM FolderPermission GROUP BY FolderID, RoleID, PermissionID

And that's enough for the moment *grin*


Comment Form

Only registered users may post comments.


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Daniels (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out