Giter VIP home page Giter VIP logo

dnnsoftware / dnn.platform Goto Github PK

View Code? Open in Web Editor NEW
998.0 177.0 744.0 888.4 MB

DNN (formerly DotNetNuke) is the leading open source web content management platform (CMS) in the Microsoft ecosystem.

Home Page: https://dnncommunity.org/

License: MIT License

C# 65.12% JavaScript 25.95% HTML 1.64% CSS 2.77% XSLT 0.03% Batchfile 0.01% PowerShell 0.01% TSQL 0.39% Visual Basic .NET 0.35% ASP.NET 1.58% Less 1.71% Shell 0.01% TypeScript 0.42% SCSS 0.04%
dnn dnncms dotnetnuke dnn-platform microsoft-ecosystem cms hacktoberfest

dnn.platform's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dnn.platform's Issues

DDR Menu: Exclude Nodes

Description

Tab IDs specified in the ExcludeNodes property do not work as expected on children nodes. It only works for pages that are directly under the root element.

Steps to reproduce

  1. Setup your pages so that you have one page nested in your menu.
  2. Find the ID for one of the nested page, and one of the top level pages.
  3. Add the ExcludeNodes="tabid1,tabid2" in your skin for your <DNN:Menu
  4. Reload the page

Put these entries for pageid, and nest pageid(child) in file
{Website Root}

\Portals_default\Skins\Cavalier\Main.ascx

like this

<div class="nav"><dnn:MENU ExcludeNodes="58,73,36,79,77" MenuStyle="Simple" runat="server"></dnn:MENU></div>

all ids except 58 are for nested or child tabs

Current result

Top level page is not there, yet nested page is still listed.

Expected result

Affected version

  • 9.1.1

Robots.txt file restricts content that is important for search engines

The currently distributed Robots.txt file restricts multiple directories, including /Portals, /Resources, and /DesktopModules. These directories often contain important content that bots need to use for proper rendering of the site, such as JS, CSS, as well as user loaded content such as PDF's or otherwise.

This file, in default should ONLY restrict paths that do not contain any possible user-supplied content or otherwise

Producing installation package without CI

Description

Here's the proposal I submitted on TAG Slack some time last month. It presents my idea on detaching the process of packaging Platform, Evoq or even custom installation bundles from the CI platform.

Current state

To build a package of DNN Platform it is required to build its source code and combine with artifacts produced by Persona Bar and some other repositories.

Until recently, this was done on TeamCity, which created a lock-in and its configuration promoted a pipeline which was hardly replicable on local developer machine.

Intended state

Entire build pipeline should be easily executable from the Dnn.Platform repository:

  1. Building solution
  2. Downloading all required packages
  3. Packaging into the zip files

Getting there

Instead of relying on TeamCity or other 3rd party, which cannot be controlled directly (ie. exists only on CI infrastructure/software), I propose to employ NuGet packages.

Example pipeline

First, the module would be built and published

  1. Build module dependency
  2. Create zip packages as usual
    • eg. DDRMenu_09.02.01_Install.zip
  3. Wrap packages in a nupkg file (new)
    • DDRMenu.9.2.1.nupkg
  4. Publish the nupkg to a feed

Now that module can be consumed by Platform build

  1. Build Platform solution
  2. Get all required packages from the feed
  3. Copy the zip installers to the required location
  4. Run packaging script

Benefits

This has a number of positive effects on what is possible:

  • Repository will become self-contained
  • Packaging will be repeatable
  • Currently there is no way guarantee that packaging same revision produces identical packages!
  • Each module will be allowed to be published and versioned independently
  • Module can have dependencies which will actually be resolved
    • Albeit, only at build-time but it's a start
  • One would clone Dnn.Platform, add their own modules and package a custom installation package
    • Could use a private feed or use open feed of 3rd party components

Tooling proposal

I mention NuGet, but not the official client. Instead, there is wonderful open source replacement called Paket. It has a number of advantages:

  • Can (easily) work outside of a solution/csproj, just downloading the necessary packages
  • Comes with a simple text format, both for defining dependencies as well as creating nupkgs
  • Guarantees stable folder structure, which is important for easy scripting
  • Generates a lock file, like yarn, which guarantees repeatable builds

Dependencies to old SharpZipLib don't get resolved properly

Because of the update in 9.2, any module using SharpZipLib before will be incompatible, and updating makes it incompatible with previous DNNs.

This should be fixed. There is a way to intercept DLL resolves and I have the code for it ready in 2sxc, which I'll contribute in a few days.

Can not edit page after upgrade from Dnn 9.1.0 to 9.2.0

Description

After upgrading to Dnn 9.2.0 i can not edit a page, the error log shows Missing WebActivatorEx.

2018-06-22 09:44:52.458+07:00 [SCCA_N010][D:14][T:24][ERROR] DotNetNuke.Services.Exceptions.Exceptions - ~/Default.aspx?tabid=33&error=terminate
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'DotNetNuke.ExtensionPoints.ExtensionPointManager' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'WebActivatorEx, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7b26dc2a43f6a0d4' or one of its dependencies. The system cannot find the file specified.
at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType)
at Microsoft.Internal.AttributeServices.GetAttributes[T](ICustomAttributeProvider attributeProvider)
at System.ComponentModel.Composition.Hosting.AssemblyCatalog.get_InnerCatalog()
at System.ComponentModel.Composition.Hosting.AssemblyCatalog.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at DotNetNuke.ExtensionPoints.SafeDirectoryCatalog..ctor(String directory)
at DotNetNuke.ExtensionPoints.ExtensionPointManager.InitializeMefCompositionContainer()
at DotNetNuke.ExtensionPoints.ExtensionPointManager..cctor()
--- End of inner exception stack trace ---
at DotNetNuke.ExtensionPoints.ExtensionPointManager.ComposeParts(Object[] attributeParts)
at DotNetNuke.Web.Components.Controllers.ControlBarController..ctor()
--- End of inner exception stack trace ---
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstanceT
at DotNetNuke.Framework.ServiceLocator`2.InitInstance()
at System.Lazy`1.CreateValue()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Lazy`1.get_Value()
at Dnn.EditBar.UI.Items.AddModuleMenu.Visible()
at System.Linq.Enumerable.WhereListIterator`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.OrderedEnumerable`1.d__1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dnn.EditBar.UI.Controllers.EditBarController.GetMenuItems()
at Dnn.EditBar.UI.Controllers.ContentEditorManager.OnInit(EventArgs e)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.AddedControl(Control control, Int32 index)
at Dnn.EditBar.UI.HttpModules.EditBarModule.OnSkinInit(Object sender, SkinEventArgs e)
at DotNetNuke.UI.Skins.Skin.InvokeSkinEvents(SkinEventType skinEventType)
at DotNetNuke.UI.Skins.Skin.OnInit(EventArgs e)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.AddedControl(Control control, Int32 index)
at DotNetNuke.Framework.DefaultPage.OnInit(EventArgs e)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Steps to reproduce

by following this tutorial on how to Upgrade Dnn 9.1.0 to 9.2.0 by copying DNN_Platform_9.2.0.366-777_Upgrade.zip into DNN folder.

Current result

i cannot find the WebActivatorEx.dll on the Install package either, now i'm trying to build from source.

Expected result

Affected version

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0

Affected browser

  • Chrome
  • Firefox
  • Safari
  • Internet Explorer
  • Edge

Add multiple issue templates

GitHub supports multiple issues templates for a repository (see https://blog.github.com/2018-05-02-issue-template-improvements/). Currently, the issue template is geared towards reporting bugs.

I suggest that we add a separate issue template for suggesting features. It could have areas to document:

  • if related work is required in the Persona Bar or other related projects
  • what considerations have been made with regards to performance, multi-lingual support, backwards compatibility, etc.
  • expected testing strategy
  • anything required to be documented for the ESW QA team

Or it could just be a description field, if we want to avoid overwhelming folks who want to suggest improvements to the platform

"See More Results" when searching produces an error when searching in Firefox

Description

While on Firefox, if the user tries to search and use "See More Results" at the bottom of the search results, it produces an error and does not open the results page.

Expected result

Jump to search result page.

This works correctly on google chrome.

Current result

Error in console:

TypeError: access to strict mode caller function is censored

Affected version

  • 9.2

Client Dependency Reference is BLOCKING any local development

The ClientDependency.Core reference in the DNN_Platform.sln is breaking and blocking any local development on the platform. This was originally setup as a git submodule but has been causing lots of issues for several developers.

I have been speaking with the team in DNN TAG and we have a proposed solution:

CreateUser method uses oAuth specified state parameter

(this bug was previously submitted in JIRA:
https://dnntracker.atlassian.net/browse/DNN-7444 )

Description

In version 7.2.1 issue DNN-4133 CLOSED is fixed in an inappropiate manner.

If the AspNetMembershipProvider CreateUser method happens to find a parameter named 'state' in the Request.Params object, it bluntly takes over the user.UserName passed to the CreateUser method and replaces it with whatever it finds in the 'state' parameter, prefixed to the user.Email.

The code is intended to fix a specific (LiveID) OAuth issue, but does not check whether it is excecuted within OAuth context.
Even within OAuth context, it is not correct to make any assumptions about the contents of the 'state' parameter and its suitability for use in the UserName,

A quote from The state parameter according to the Google Oauth 2.0 docs:
[state] Indicates any state which may be useful to your application upon receipt of the response. The Google Authorization Server roundtrips this parameter, so your application receives the same value it sent. Possible uses include redirecting the user to the correct resource in your site, nonces, and cross-site-request-forgery mitigations.

Please remove this fix. Consider fixing the specific OAuth issue outside of the generic AspNetMembershipProvider.CreateUser method - if your OAuth implementation needs a different UserName, i.m.h.o. it should pass in a different UserName to the CreateUser call.

Affected version

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0

Affected browser

  • Chrome
  • Firefox
  • Safari
  • Internet Explorer
  • Edge

Trailing slash on component basePath causes install error

I've been investigating installation errors I've encountered while reviewing DNNCommunity/PolyDeploy#20.

If a component defined in the module manifest has a basePath featuring a trailing slash, the get method for the PhysicalBasePath property doesn't appear to account for this. The constructed path ends in twice as many slashes as intended, this then causes a module installation error.

protected virtual string PhysicalBasePath
{
    get
    {
        string _PhysicalBasePath = PhysicalSitePath + "\\" + BasePath;
        if (!_PhysicalBasePath.EndsWith("\\"))
        {
            _PhysicalBasePath += "\\";
        }
        return _PhysicalBasePath.Replace("/", "\\");
    }
}

Given a BasePath of "DesktopModules/Cantarus/PolyDeploy/" the resulting path would be:

[PhysicalSitePath]\\DesktopModules\\Cantarus\\PolyDeploy\\\\

Re-ordering the operations as below may be all that's needed?

protected virtual string PhysicalBasePath
{
    get
    {
        string _PhysicalBasePath = PhysicalSitePath + "\\" + BasePath;

        _PhysicalBasePath = _PhysicalBasePath.Replace("/", "\\");

        if (!_PhysicalBasePath.EndsWith("\\"))
        {
            _PhysicalBasePath += "\\";
        }

        return _PhysicalBasePath;
    }
}

It is impossible to get the cloned 9.2 repo to be used to install and get a working DNN website up and running

I have ran into several issues and I am unable to get a working website to work. I keep getting DNN Error and it's one issue after. The current repo is missing several parts and is incomplete in its current form or if there are certain step to make a site work, then the instructions or documentation is severly lacking.

  • The Xcillion folder structure is not complete. I opened an issue about this early.
  • Database is not pointing to the new personbar. I had to execute: Update HostSettings SET HostSettings.ControlPanel = ‘DesktopModules/Admin/Dnn.PersonaBar/UserControls/PersonaBarContainer.ascx’ WHERE HostSettings.SettingName = ‘ControlPanel’;
  • Dnn.PersonaBar & Dnn.EditFolder are mising under the admin subfolder
  • There are probably a host of other issues yet to be discovered.

This 9.2 repo is in a non working condition. There are no instructions on the home page of the repo on how to build the whole solution and get a working site going.

Can't change host email in Dnn 9

In previous versions of Dnn, there was a setting in Host Settings to set the host email. This email was used when testing the SMTP server settings. So when testing the emails, users do not receive the email since they don't have access to [email protected] (the default on new installations)

Also, some modules may use that email address to notify the host, so people changing their email and not having control over this, stop receiving those notifications.

I think this could be added in Settings -> Server Settings -> SMTP Server

In the database, this is stored in HostSettings Table with a SettingName of HostEmail

Pages > Page that has never been published should return a 401 (not a 404)

Description

Pages > Page that has never been published (that have only one version pending to be published) should return a 401 (not a 404) for non-editor users.

Note: even if the registered user has view permission on the created page, as the page has not been published yet the view permission does not apply until the page is published.

Steps to reproduce

  • Log in as CM
  • Go to Persona Bar Pages
  • Create a Page marking the permission to be visible to registred user
  • Add a module
  • Do not publish the page
  • Log in as Registered User
  • Surf the URL of the created page

Current result

  • 404 is returned

Expected result

  • To be consisten with how platform works and Engage module + Publisher we should return a Access Denied error (401 http status)

Affected version

  • 8.0.0,
  • 8.1.0
  • 8.2.0

'Too many redirects' Error

After upgrading 9.1.1 to this version the site shows a blank page with 'Too many redirects' error. Any suggestions?

Cannot create new user with email address as username

Description

Going to Persona Bar > Security > Member Accounts tab > Registration Settings, and marking Use Email Address as Username, will generate an error upon login, displaying message "A critical error has occurred. Please check the Event Viewer for further details."

Steps to reproduce

  1. Set up a clean DNN 9.2 install.
  2. Go to Persona Bar > Manage > Users.
  3. Click the "Add User" button.
  4. Fill details for new user, setting an email address as the username.
  5. Click "Save" button.
  6. An error message is displayed saying: "The username specified is invalid. Please specify a valid username."

Current result

After upgrading to DNN 9.2, customer is no longer able to add user with their email addresses as username. The following Error Message is displayed: "The username specified is invalid. Please specify a valid username."

Expected result

Being able to add email address as a valid user name in the default user creation form.

Affected version

  • 9.2

DNN 8.0.3.5 jQuery 1.9.1 Security Issue

Hopefully I'm posting this to the right place. Am new to DNN and am mainly a server-side coder.

We are currently failing a security audit due to the following:
jquery/jquery#2432

Looking at the following folder structure of our install, it seems that jQuery v1.9.1 is installed out of the box:
\Resources\Libraries\jQuery\01_09_01

It would also seem that there is no set way to upgrade the version of jQuery. We must upgrade to v3.0.0 or better. I used this guide to get around the upgrade problem. Unfortunately this breaks the admin with jQuery versions v3.3.1 and v3.0.0 - browser scrolling stopped working as well as pop-ups. For example, cannot uninstall/install an extension.

Can someone suggest a solution?

DNN Error. Because the Xcillion folder doesn't have subfolders, all the files are under Xcillion folder.

After doing an installation from the 9.2 release, I get a 'DNN Error' message. After some debugging, I noticed that I am getting an exception :{"Could not find a part of the path 'C:\inetpub\wwwroot\Dnn.Platform\Website\Portals\_default\Skins\Xcillion\Common\AddFiles.ascx

I don't have a Common subfolder. I installed another instance using nvQuickSite and noticed it has several subfolder under Xcillion whereas the DNN installation from the source had all the files from these subfolders under the Xcillion and none of the subfolders are present.

So what's the deal? Does the source install in a certain way?

Post DNN Upgrade Admin pages Not visible in Persona Bar

Hi,

Post DNN Upgrade Admin pages are not visible. Pre Upgrade users with Administrator rights were able to view and use pages like Users, Roles, Event Viewer.

Now Admin Users are not able to view any page. Attached is an example of an Admin Users Persona Bar menu.

Please can you let us know if we are missing any setting.

admin_menus

Not able to Edit or add new pages in Evoq 9.1.1

Description

i am not able to edit or add pages after upgrading to 9.1.1 whenever i want to add the page its showing erroe "There was an error retrieving your content. Please check your internet connection."

Steps to reproduce

Current result

error

Expected result

Affected version

  • 9.1.1

Long page titles are cropped in the Pages editor (UX enahncement)

When working with nested pages, or pages with long names, the page name gets cropped after only 10 or 12 characters:

image

There's no obvious way to see the full page name without clicking on and loading it in the the right pane.

Would it be better if the full page name could be shown when the user hovers over/taps/tabs to the link (depending on their input device)?

Handling underscores and spaces in property names

Description

We've identified some issues with regard to how profile properties are handled:

  1. Property name cannot contain spaces because they are replaced with underscores and the profile page tries to find a property which doesn't exist
  2. There cannot be two properties which differ only in spaces vs underscores ("Hire date" ~ "Hire_date") because they will generate the same web control identifiers on profile page\

Steps to reproduce

  • Log in
  • Go to Persona Bar > Settings > Site Settings > Site Behavior > User Profiles > + Add Field
  • Set Field Name* to : HireDate
  • Set Data Type* to : Date
  • Set Property Category* to : Date
  • Set Read-Only to true/enabled
  • Set Visible to true/enabled
  • Set Default Visibility to : All Users
  • Press Next
  • If you have Content Localization enabled, for each Language you must set the name of the field again. I only have English so for Localized Content, I set the field name to : HireDate
  • Next, repeat the steps above but instead of HireDate, add a new field called Hire Date and save.
  • You should now have two new User Profile Fields: HireDate and Hire Date
  • Next, go to Persona Bar > Manage > Users > Add User > create a user with the default settings
  • On the Users list click the Ellipsis menu (... Menu) to the right of the user you created
  • Click Login as User
  • From the top-right corner of the screen, click on your user name > Edit Profile
  • Expand the new user profile field category you created (in my case Date category)
  • You will see that HireDate is read-only as and works as intended
  • You will see that Hire Date is not read-only although we set it as such and can be edited

Proposed solution

Short of changing how those names are handled within C# code and passed around we came up with another solution to limit how the profile can be used:

Treat properties as equal but stripping underscores and replacing with spaces

name given name saved
"Hire date" "Hire date"
"Hire_date" "Hire date"
" Hire date " "Hire date"
"_Hire date_" "Hire date"

This means that if there already is a property called Hire date then attempting to add _Hire_date_ would replace it and not create a new one, as it now happens when names are 100% equal.

NOTE I find this behaviour kind of surprising and it should warn the user about what is happening but it's a separate discussion.

Prompt core classes are in the wrong place

The feedback from my presentations about prompt highlighted one issue: since the PersonaBar is an optional component of DNN no module developer will ever make any Prompt commands as you're taking a dependency on something that might not be there.

The core mechanism of Prompt should not reside in an optional component. Instead, it should be part of the core library so that module developers can safely build on top of this.

DNN 9.2 profile update does not work if Profile Property "Photo" is missing

Description

When creating/registering a user

[DNN-PC114][D:2][T:5][ERROR] Dnn.PersonaBar.Users.Services.UsersController - System.ArgumentException: Unknown UserCreateStatus value encountered
Parameter name: userRegistrationStatus
at DotNetNuke.Entities.Users.UserController.GetUserCreateStatus(UserCreateStatus userRegistrationStatus)
at Dnn.PersonaBar.Users.Components.RegisterController.Register(RegisterationDetails registerationDetails)
at Dnn.PersonaBar.Users.Services.UsersController.CreateUser(CreateUserContract contract)

When updating a user

2018-04-16 09:55:31,491 [JWIDPC159][Thread:21][FATAL] DotNetNuke.Web.Common.Internal.DotNetNukeHttpApplication - System.NullReferenceException: Object reference not set to an instance of an object. 
at DotNetNuke.Services.GeneratedImage.ProfileEventHandler.ProfileUpdated(Object sender, ProfileEventArgs profileArgs) 
at DotNetNuke.Entities.EventManager.OnProfileUpdated(ProfileEventArgs args) 
at DotNetNuke.Entities.Profile.ProfileController.UpdateUserProfile(UserInfo user)

Steps to reproduce

  1. Remove the photo profile property in Site Settings > Site Behaviour > User Profiles.
  2. Try registering a user or adding a new user through the Persona Bar UI.
  3. You cannot even update profiles of users.

Current result

User is not created and is thrown an error.
When profile is updated, an error is thrown.

Expected result

User should be created.

Affected version

  • 9.2

Site import fails if the language of the Target Site does not match that of the Exported site

Description

Site Import fails partway through if the language of the Target Site does not match that of the Exported site.

The Import/Export screen does not inform the user of the failure - it continues to say "In Progress".

Steps to reproduce

  1. Create a new DNN site with default settings
  2. Under Site Settings > Language, add English (United Kingdom) and set it as the Site Default
  3. Add some content to that site
  4. Using the Import/Export functionality, run a Full export of that site
  5. Create a brand new DNN installation with default settings (so the language is English (United States))
  6. Copy the exported data to the new site's App_Data\ExportImport folder
  7. Run the Import task on the new site

Current result

The Import/Export screen will say "In Progress" forever. Meanwhile, looking in the scheduler history shows the SITE IMPORT job has failed:

SITE IMPORT Started. JOB #1
SITE IMPORT Preparing Check Points. JOB #1: Testing 123
Imported: USERS
Export/Import EXCEPTION: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_PortalLanguages_PortalLanguages". The conflict occurred in database "920-import-test", table "dbo.Languages", column 'LanguageID'. The statement has been terminated.

Expected result

  1. If the Import task fails, the progress on the Import/Export screen should be updated accordingly
  2. The Import task should be able to change the language settings on the target site

Affected version

I have only tested against 9.2.0, but can reproduce the issue in both Platform and Evoq Engage.

Affected browser

n/a, although I tested in Firefox on Windows Server 2012.

Workaround

As a workaround, you can visit Site Settings in the Target site and manually make the language settings line up with the Exported site. then re-run the Import task from the scheduler.

Evoq 9.2 regression - CSS minification not working for third party sites

Description

Please see this e-mail from February 21, 2017 for reference.

The purpose of this ticket is to let you know that item #5037 below (CSS minification downloading Google fonts.), has occurred again as a regression in 9.2.
This is the second time this fixed issue has appeared as a regression. The last time was in 9.0.1
Until this is fixed we can’t upgrade to 9.2.

Subject: Re: Evoq 9.0.2

We have been attempting to upgrade to Evoq 9.0.1 and ended up finding several bugs in the version 9 platform. One of those issues took significant pushing before it was believed that it was an issue with Evoq and not our skin.
DNN support issued patches for us, which was great. But now we intend to skip the 9.0.1 upgrade and go straight to 9.02 instead because of the security concern, and those fixes don’t appear in 9.0.2. We are having to re-request support and are being told that we need to tell them which tickets were issues. It is astounding that these fixes didn’t make it into the main DNN platform, as they were all issues that others could also experience.

The support tickets that are of concern with our Evoq upgrade include the following (none made it into 9.0.2, even though we received patches for 9.0.1):
7613 – Evoq 9.0.1 - Error when adding a page redirect in the page settings
7656 – Evoq 9.0.1 layout preview does not work
5037 – CSS minification downloading Google fonts. Was provided with patch but stopped working in 9.0.2. And see: https://dnntracker.atlassian.net/browse/DNN-8616
7615 – Null reference in Skin custom code, requiring code change. Cause was change of behaviour in Evoq 9.

Can we discuss?

Affected version

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0.2

New feature: Package dependency on database version

A package should be able to indicate that it requires a particular version of SQL Server. Currently, packages can specify dependencies in their manifest. This suggestion is to add a new type of dependency.

The most straightforward would be to add <dependency type="SqlServer">2016</dependency>. Because DNN's data provider is abstract with multiple possible implementations, it may make sense to be less SQL Server specific. Perhaps a better approach would look more like <dependency type="database" version="2016">SqlDataProvider</dependency>.

Open questions:

  • What should the name of the dependency be?
  • How should the version be specified (e.g. 2017 or 14.0.1000.169)?
  • Does this need to be an additional feature that any data provider could implement (e.g. would an OracleDataProvider be able to provide an implementation which determined the database version)?
  • Do we want to handle this in a specific way during the installation and upgrade wizards (e.g. allow skipping packages whose dependencies aren't met, show warnings, etc.)?

Redirect after login setting not working for login page

Description

It appears to be due to this commit fbaf5f5

since the isDefaultPage value might be false in some instances; however, I was unable to debug it locally. Thank you in advance.

Steps to reproduce

  1. Go to Settings > Security and assign a page for the redirect after login.
  2. Go to domain/login page not the popup control

Current result

It takes you back to the home page

Expected result

It takes you to the actual page

Affected version

  • 9.2

Personabar TabOrder after Import

Description

Portal Import resets tab order in 9.1.1 if we have costume ordered tabs earlier.

Steps to reproduce

Create a fresh installation of 9.1.1 or 9.2.0
Create few pages with some content on them
Create few nested pages too.
Export this portal
Import this Portal

Current result

Pages order in new Portal is reset to default (on 9.1.1)
Pages are missing in 9.2

Expected result

Pages should not be missing or order should not be reset to default

Affected version

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0

Email as Username - Error creating new user & Error login in.

Description

Test done on new fresh install of DNN9.2.0.366-777

1 - Set "Use Email Address as Username" in Security > Member Accounts > Registration Settings.
2 - Creating a new user using an email address for the username field & Email address gives the following error.
"The username specified is invalid. Please specify a valid username."
3 - Unable to log back into site with either Super User username or Super User email address.

Steps to reproduce

Current result

Expected result

Affected version

Reported in Build: 9.2.0.366-777

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0

Affected browser

  • Chrome
  • Firefox
  • Safari
  • Internet Explorer
  • Edge

PB Assets : Uploading to subfolder of User Profile folder in Assets loads to parent folder

Description

Steps to reproduce

  • Log in as Content Manager
  • Open Assets
  • Locate the user profile folder of the Content Manger (users/n/x/y)
  • Create a new folder called 'Temp' in the User profile folder using Assets
  • Open the newly created folder 'Temp'
  • Upload an image in the Temp folder

Current result

Image is uploaded to the user profile root folder.

Expected result

Image is uploaded to the Temp folder

Affected version

  • 9.1.1

Setting the Description and Keywords fields within Site Settings appears to change the Description and Keywords fields on every page

Description

Setting the Description and Keywords fields within Site Settings appears to change the Description and Keywords fields on every page

Steps to reproduce

  • Access Site Settings from the Settings, Site Settings area (off the Persona Bar)
  • Populate the Description and/or Keywords fields
  • Click Save

Current result

The above steps will change the Description and Keywords fields for all of the pages within the site (although they do not appear to change values that were already set)

Expected result

Do not change the Description and Keywords fields for the pages, just for the site itself (or if there is value here, maybe ask during the Save routine)

Affected version

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0

Affected browser

I have only had the opportunity to test within Safari.

  • Chrome
  • Firefox
  • Safari
  • Internet Explorer
  • Edge

Output cache item count doesn't show correctly

Steps to reproduce

  1. install Engage 9.2.0 and login as host;
  2. create 3 pages with setting: view by all users; output cache provider set to Memory, cache duration 3600 seconds.
  3. view the 3 pages in incognito window several times, to make sure output cache generated for all the 3 pages.
  4. open page settings for one of the 3 pages, switch to Advanced > More tab, click "Clear Cache - This Page" button, and you will see the cache item count update to 0.
  5. refresh the page and open the page setting again.

Current result

the page cache item count actually display the total output cache items count but not only current page.

Expected result

the page cache item count should be 0.

The File output cache provider has this issue as well, but database output cache provider works fine.

Affected version

  • 9.2

Export/Import not importing module permissions for custom roles

Steps to reproduce

Setup 2 clean installations or Portals (Source and Target)

On Source:

  1. On Source Create a couple of custom roles.
  2. Add permissions to a couple of modules for those roles. Create new modules if possible.
  3. Add permissions to a page for those roles. Create a new page if possible.
  4. Create a Full export of the site. You can choose to exclude extensions or assets since these are not needed.

On Target:

  1. Copy export package from source to target (if different installations)
  2. Import with default settings.
  3. Review permission settings for modules and pages.

Note: I have reviewed the contents of the export in the dnndb file and the permissions for the custom roles are present there as well as the default (Admin,CM,CE) permissions.

Expected behavior

It should import both the page and module permissions.

Current behavior

The custom role permissions exist on target site for pages; however, no permissions are added for modules and it only inherits the default ones from a page.

If the import is run a second time in the source site, the following error will be thrown:

Dnn.ExportImport.Components.Engines.ExportImportEngine - System.NullReferenceException: Object reference not set to an instance of an object. 
   at Dnn.ExportImport.Components.Services.PagesExportService.<>c__DisplayClass38_1.<ImportModulePermissions>b__0(ModulePermissionInfo x) 
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
   at Dnn.ExportImport.Components.Services.PagesExportService.ImportModulePermissions(ModuleInfo localModule, ExportModule otherModule, Boolean isNew) 
   at Dnn.ExportImport.Components.Services.PagesExportService.ImportTabModulesAndRelatedItems(TabInfo localTab, ExportTab otherTab, Boolean isNew) 

It appears to be an issue in this line of code:

var local = localModulePermissions.FirstOrDefault(

since this second time there is a local reference of that same module; however, the modulepermission entries is still null as no permissions are added in the db for this module.

Instructions to correctly build dnn from repo and submit pull requests need updating

We need clear instructions on how to build the project now that it is split into multiple repositories.

There is already very clear instructions on how to do it from the source zip package but how should the folder structure be made locally so that when building persona bar extensions in release mode, the dll gets in the proper folder to test on the development website. Same for the others.

I don't know if this is clear, but we need to discuss this, I can write up the a good blog post or .md file here, but I need some quick answers on the stuff I am more confused about.

Bring back a basic Google Analytics UI

Description

Previously, Dnn had a module to configure google analytics tracking code. I think all the necessary code is still in place and that it is just a matter of writing the code in a config file to have it working. I think this would just be missing the UI to actually set the google analytics tracking account id.

Steps to reproduce

Try to enter the google analytics tracking account id.

Current result

There is no UI to do it

Expected result

Users should be able to enter their tracking id and have basic google analytics working on their site.
Currently, they need to resort to injecting javascript or using a third party module.

Affected version

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0

Affected browser

  • Chrome
  • Firefox
  • Safari
  • Internet Explorer
  • Edge

This I think should be implemented with just the basic account id, nothing more than what was provided in older versions because commercial editions have more advanced google analytics management.

Bring back a way to set small and large icons for a page

Description

When the persona bar was implemented, the ability to set a small and large icon to a page was removed, it would be nice to bring this back.

Steps to reproduce

Try to assign a small and a big page icon (image to any page)

Current result

There is no interface to upload and set those files

Expected result

There should be a way to do it in the UI, probably a drag-and-drop image uploader with preview. Can probably reuse the component used in for the site logo and the site favicon.

  • Both the small and large icons should be implemented, not just one of the two
  • There should also be a preview of the selected image.
  • Testing should be done for a use case of an older Dnn relese (lets say 8.0.4) that had icons set, to make sure nothing breaks for upgraded sites.
  • A default folder for the page icons should be set for the drag-and-drop scenario so users dont need to select the upload location, but that folder should be chosen in a way that would not override existing images by error, so probably not save them in the portal root, but maybe in Portals/portalid_system/page-icons, what are your thoughts on this?
  • Users also need to be able to select an existing file in any portal folder, just like for the site logo.

Affected version

  • 9.2
  • 9.1.1
  • 9.1
  • 9.0

Affected browser

  • Chrome
  • Firefox
  • Safari
  • Internet Explorer
  • Edge

This being a feature that was actually removed, ie: not a new feature, I think it should be implemented quickly to allow the users that are currently using page icons to be able to upgrade. In other words, I don't consider this a new feature or enhancement, but a bug fix. (Any chances of this happening in 9.2.1 or am my over-optimistic here ?).

Opening up certain methods in LocalizationProvider that are useful for others.

Most of the code to access resource files is hidden because the methods are private. The public code revolves around retrieval of a localized resource and getting a "Compiled Resource File" meaning a dictionary of entries with best effort translated values for a given combination of resource file and locale.

I'd like to see the following methods become public:

  1. Dictionary<string, string> GetResourceFile(string resourceFile)
    This is one of the most basic methods in this class. It loads a given file and returns it as a dictionary.

  2. GetResourceFilename
    Currently there are 2 overloads. I'd like to see the most complete one public. And the current ones are missing the "ResourceType" parameter which would tell it whether it should be a Host/Portal/None file. We should have a single complete entry point where any developer can get the correct resource file name given all parameters. So a new overload that takes string resourceFileRoot, string language, PortalSettings portalSettings, CustomizedLocale resourceType as parameters.

The use case: in several cases I've run into this when creating translation tools for DNN. It is frustrating to have to recreate the entire class because methods have been made private that were necessary for me to access.

ImportExport issue for child pages

Description

If you create 5 pages and you set the last one as the parent of 1,2,3 and 4 it will work in your page but if you try to export that, it will fail to import, only page 5 will be shown and all the children will be lost(1,2,3 and 4 for this example). I have tested this feature with full and incremental, both ways are failing.

Steps to reproduce

https://www.useloom.com/share/58c2b631291246e386355c53f8049428

  1. Create any number of pages (let's say you created 3 pages).
  2. Set the *last created as the parent of the pages you just created (if you create 3 pages, then page number 3 will be the parent on page 1 and 2)
  3. Export these pages, both parent and children
  4. In a new website import the 3 pages

Current result

You will only be able to see the parent page (in this example only page number 3 will be shown)

Expected result

You should be able to see all the pages 1,2 and 3.

*Order of creation should not affect.

Affected version

  • 9.2
  • 9.1.1

NewtonSoft

The upgrade package does not include the newtonsoft.json.dll library which causes the upgrade to break if you do not already have v10.0.0.0 installed of the lib. The main install package contains it though

Path construction in LocalizationProvider.SaveString is wrong

The current code uses the following:

string filePath = HostingEnvironment.MapPath("~/" + Globals.ApplicationPath + resourceFileName);

When not in a virtual directory Globals.ApplicationPath is usually "/". So it doesn't add anything. But in a virtual dir it is "/foobar" while HostingEnvironment.MapPath adds the foobar as well. And given the lack of trailing slash it is wrong regardless. This code should be:

string filePath = HostingEnvironment.MapPath("~/" + resourceFileName);

I'll submit a PR for this.

Impact: this code is used only by editing certain list entries (!) that are pulled from resource files (countries, regions).

I have personally created this code and this error. I am not sure why it has gone unnoticed for 4 years, but my guess is that no one uses this method often.

RequireUniqueDisplayName does not work with adding users to multiple portals.

Steps to reproduce

When you copy a user to another portal by adding it with the same First name, Last name, Username, Email and Password, it just adds an additional row to the UserPortals table, it does not create an additional user for there to be a duplicate.

Steps to reproduce

  1. create a site with two portals
  2. UPDATE PortalSettings SET SettingValue = 'True' WHERE SettingName = 'Registration_RequireUniqueDisplayName'
  3. Add a user to the first portal
  4. Navigate to the 2nd portal and add the same user

Expected behavior

The user should be added. The Registration_RequireUniqueDisplayName setting should just prevent you from registering a new user with an existing DisplayName

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.