Skip to content

[Enhancement]: Skin Overwrite #40

@leedavi

Description

@leedavi

Is there an existing issue for this?

  • I have searched the existing issues

Description of problem

Need more control of the skin, current this is done with a httpmodule or skinsrc cookie/url. Preferably a more secure and flexible method should be used.

Description of solution

Technical Requirements: Module-Controlled Skin Override via Manifest <moduleControl>

Objective

Enable dynamic skin override by adding a <skinOverride> element to each <moduleControl> in the DNN manifest, allowing the HttpModuleRocket to read the configuration at runtime.

Proposed Manifest Schema

Add a <skinOverride> element to each <moduleControl> that requires a specific skin:

<moduleControl>
    <controlKey>Edit</controlKey>
    <controlSrc>DotNetNuke.Web.MvcPipeline.ModuleControl.WebForms.WrapperModule, DotNetNuke.Web.MvcPipeline</controlSrc>
    <mvcControlClass>RocketContentRazor.Controls.EditControl, RocketContentRazor</mvcControlClass>
    <supportsPartialRendering>True</supportsPartialRendering>
    <controlTitle>Edit Rocket Content</controlTitle>
    <controlType>Edit</controlType>
    <skinOverride>/rocketedit</skinOverride>
    <iconFile />
    <helpUrl/>
    <supportsPopUps>True</supportsPopUps>
    <viewOrder>0</viewOrder>
</moduleControl>

Implementation Changes Required

Database Storage

The <skinOverride> value would be stored in DNN's ModuleControls table (new column) or as an extended property, parsed during module installation.

Benefits

  • Module-specific: Each module controls its own skin overrides
  • Declarative: No code changes needed per module
  • Backward compatible: Modules without <skinOverride> use default behavior
  • Clear mapping: Skin directly associated with the control that uses it

This approach embeds skin configuration directly in the control definition, making it self-documenting and module-specific.

Description of alternatives considered

No response

Anything else?

No response

Do you plan to contribute code for this enhancement?

  • Yes

Would you be interested in sponsoring this enhancement?

  • Yes

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions