DNN Blog

Jun 30

Posted by: Scott Willhite
6/30/2006 4:00 AM  RssIcon

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
    BEGIN

    /* 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 */
     DELETE
      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
    END


    >> 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*

Tags:
Categories:
Location: Blogs Parent Separator Scott Willhite

7 comment(s) so far...


Re: Tasting a little dogfood, part 2 of...

Excellent Post - it is great to hear the first hand experiences of the core team and for you to share scripts to help identify and fix issues.

I upgraded a 4.03 system to 4.3.1 locally and have some wierd issues, that just went away, so possiby cache issues.

Still a few more items to work through.

Of course the new features are great also!

By jbonnie on   7/1/2006 2:07 PM

Re: Tasting a little dogfood, part 2 of...

Scott, check out my post in the moderators forum. http://www.dotnetnuke.com/Community/ForumsDotNetNuke/tabid/795/mid/2108/threadid/49929/scope/posts/Default.aspx#49929

By hooligannes on   7/1/2006 5:39 PM

Text/HTML module caching problems

Scott -
w.r.t. caching issues on the HTML module, this stretches way back. Check out
http://support.dotnetnuke.com/issue/ViewIssue.aspx?id=1280
and my proposed fixes..

By gnomad on   7/14/2006 5:11 AM

Re: Tasting a little dogfood, part 2 of...

Wow... gnomad, thanks for pointing that out. Not sure how that one got missed. But you'll be happy to know that it's reportedly fixed in 4.3.3 which should be out soon and HOPEFULLY declared the official 4.3 release!

By mrswoop on   7/14/2006 5:24 AM

Re: Tasting a little dogfood, part 2 of...

I have tried this SQL statement to remove the duplicate folders and I cannot get it to work. Please could you give advice/help to remove these duplicate folders?

Thanks

Duncanf

By duncanf on   10/5/2006 7:44 AM

Re: Tasting a little dogfood, part 2 of...

Duncanf ~ That's correct... the above SQL (there are two snippets) are for handling FolderPermissions... not actually fixing the folder entries themselves. This is not complicated SQL to write, if someone has time to submit something... I will plan to post something myself, but there is much on my todo list and I fear that I won't get to it in a reasonable timeframe. Why don't you go ahead and post in the forums to see if someone will post it for you? Maybe save us both some work *grin*.

By mrswoopAdmin on   10/5/2006 7:48 AM

Re: Tasting a little dogfood, part 2 of...

Is it possible to set up your new folders to have read/write access by default?

By dstruve on   7/13/2007 1:22 PM
Attend A Webinar
Free Demo Site
Download DotNetNuke Professional Edition Trial
Have Someone Contact Me

Like Us on Facebook Join our Network on LinkedIn Follow DNN Corporate on Twitter Follow DNN on Twitter

Advertisers

Sponsors

DotNetNuke Corporation

DotNetNuke Corp. is the steward of the DotNetNuke open source project, the most widely adopted Web Content Management Platform for building web sites and web applications on Microsoft .NET. Organizations use DotNetNuke to quickly develop and deploy interactive and dynamic web sites, intranets, extranets and web applications. The DotNetNuke platform is available in a free Community and subscription-based Professional and Enterprise Editions with an Elite Support option. DotNetNuke Corp. also operates the DotNetNuke Store where users purchase third party apps for the platform.