DotNetNuke Hosting with ASPHostPortal.com

BLOG about DotNetNuke CMS, latest technology and Special DotNetNuke Hosting Package with ASPHostPortal.com

DotNetNuke Hosting - ASPHostPortal.com :: What's New in DotNetNuke 7.4.2?

clock Oktober 8, 2015 12:19 by author Kenny

What is New in DotNetNuke 7.4.2?

The latest version of DotNetNuke is 7.4.2. This version has been released at October 6th 2015. This release is maintenance release, bug fixes and support for incremental updates.

SECURITY ISSUES

This release resolves the following two security issues:

  • 2015-06 (Low) Potential XSS issue when using tabs dialog
  • 2015-07 (Medium) Users are getting registered even though User Registration is set to None

What started out as a relatively small maintenance release has turned into one of their largest maintenance releases ever. They spent a lot of time working to resolve a number of password management and multi-language issues along with a few performance enhancements. In total, they ran well over 5000 manual and automated tests on this release with a 99% pass rate.

MAJOR HIGHLIGHTS

  • Added upgrade support from beta release
  • Fixed issue with lists in custom registration form
  • Fixed issue with ignore words in Italian and French
  • Fixed issue with site export in multi-language site
  • Fixed issue where parameters in return URL were malformed
  • Fixed issue in sitemap for multi-language site
  • Fixed issue where control panel did not render links correctly in SSL offload environments
  • Fixed issue where pages with future start date were inaccessible
  • Fixed multiple password reset issues
  • Fixed issue where site settings could be duplicated
  • Fixed issue where dismissing all notifications removed messages as well
  • Fixed issue where file link for missing file caused exception
  • Fixed issue where localized portal settings were not getting applied when switching languages
  • Fixed issue where admin was unable to change interface language
  • Fixed issue where page name uniqueness was applied cross language
  • Fixed multiple scheduler issues

Best DotNetNuke Hosting Recommendation

ASPHostPortal.com provides its customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server. ASPHostPortal.com offers DotNetNuke hosting starts from $5. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable DotNetNuke Hosting, we should be your best choice.



DotNetNuke 7.4.1 Hosting - ASPHostPortal.com :: How to Use the Text DotNetNuke Skin Object

clock Augustus 28, 2015 11:54 by author Kenny

How to Use the Text DotNetNuke Skin Object

DotNetNuke is a web content management system based on Microsoft .NET. The DNN Platform Edition is open source. DNN is designed for multi-tenancy and supports an unlimited number of websites, either as root websites or for portals in a parent-child configuration. The platform's skinning feature separates content from design-related files for easier customization. Skins make it simple to maintain a common look and structure across related sites without advanced programming knowledge. DNN's core functionality can be expanded with modules for common elements, such as those for e-commerce. The software enables parent-child website resource sharing and management using specially-formed symbolic links.

How to Use the Text DotNetNuke Skin Object

What is a Skin Object?

First of all, a skin object is an ASP.Net user control that is used in DNN skins to provide a limited feature.  For example, the search box, menu, login link, copyright statement, and more, are all skin objects.  They allow a skin designer to include dynamic content without having to know how to build the content itself, or knowing any programming.

Other than the previous description, this post will assume that you know how to create and package your own skin.

Text Skin Object

The Text skin object itself is a very useful feature in skinning, as it allows you to include localized text, while not having to create a copy of the skin for each language, or using any other number of workarounds.

For example, if you have static text next to your login skin object that says, “Welcome, “ then you might want to have alternatives for another language, if you plan to support it.

I am going to use that example for the rest of this post.

The Code

There is minimal code needed to implement the Text skin object.  If you’re using an HTML skin, then you would simply need to do the following:

<object id="dnnTEXT-Welcome" codetype="dotnetnuke/server" codebase="TEXT">
    <param name="Text" value="Welcome, " />
    <param name="CssClass" value="NormalBold" />
    <param name="ResourceKey" value="Welcome.Text" />
    <param name="ReplaceTokens" value="False" />
</object>

If you are using a ASCX skin, then you would need two updates.  First, put this line of code into the top section of the source:

<%@ Register TagPrefix="dnn" TagName="TEXT" Src="~/Admin/Skins/Text.ascx" %>

Next, put this code into the appropriate spot of the source in the skin:

<dnn:TEXT runat="server" id="dnnTEXT-Welcome" Text="Welcome, "
CssClass="NormalBold" ResourceKey="Welcome.Text" ReplaceTokens="False" />

Resource Files

Next, you need to make sure your skin has resource files.  In your skin package, you should have a folder namedApp_LocalResources.  This folder will contain the necessary files to tell your skin the appropriate text to use for the skin object when the specific language is asked for during page request life cycle.

If your skin file is named index.ascx or index.html, then your default resource file for English would be namedindex.ascx.resx.  If your additional supported language is French, your filename might be index.fr-FR.ascx.resx.

The English file code would be something like this:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <data name="Welcome.Text">
    <value>Welcome, </value>
  </data>
</root>

The respective code for the French language file might look like this:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <data name="Welcome.Text">
    <value>Accueil, </value>
  </data>
</root>

Text Skin Object Properties Explained

There are a few properties that you’ve seen in the previous examples that you might be wondering about.  Here is an explanation of those properties:

  • Runat – (required, ASCX only) The value must be ‘server’ 
  • Id – (required) This is a unique name for the tag, much like in standard HTML 
  • Text – (optional) This value will be used as the default, should an appropriate resources file for the current language not be found 
  • CssClass – (optional) This value is the name of a CSS class that will be available to the rendered HTML page to stylize the text in the web browser 
  • ResourceKey – (required) This value references the id (name) of the text to retrieve from the resources file 
  • ReplaceTokens – (optional) This true/false value will tell DNN to look for system tokens and replace them with the appropriate text


DotNetNuke Hosting With ASPHostPortal :: How to modify DotNetNuke Login Page? The Easy Way

clock Maart 16, 2015 05:42 by author Mark

The DNN login page is the most forgotten part in all DNN users and even some professional DNN portals like PokerDiy.com and neoteo.com. There are few modules that allow you to have a simplified login or pop up login like digg.com but you need to pay or it and it is not cheap and easy to change the design.
dnn-login-sample

In order to make changes to your DNN Login page, you have to understand the components in the login module. The DNN Login module consists of 4 parts which is the DNN Membership Authentication System, The Authentication Provider, The Login Module itself and the Language Resources Files (.resx).

The linkage of these components are as below:
Login Module loads Authentication Provider(s) into it and the provider as a gateway to the DNN Membership Authentication System. For example, if a user using LiveID to login your DNN Portal, the LiveID Authentication Provider redirect the user to MSN LiveID Gateway and then pass the credential back to your DNN Portal and match it with the DNN Membership Authentication System.

Login Structure

However, DNN Membership Authentication System also consist of Member Registration, Password Reminder and Forgot Password Question which makes the designing work on Login Works kinda tricky, not even need to mention the words that are loaded from the language resource files.
Ok, lets start changing those ugly interface! First we need to locate all the files that need to be changed. You will need to have FTP access to your DNN installation root.

Step 1: Changing the Login Module Container

The Login Module is basically the Admin’s Container by default where there is actually no login page but a “DNN Control” (Home/ctl/Login.aspx) unless you create a page and specified it in Admin > Site Setting > Advance Setting > Login Page.

Step 2: Locating Files that need to be changed

Now we need to locate the Login Authentication Providers at /DesktopModules/AuthenticationServices/ There will be 3 default providers which is DNN, LiveID and OpenID. You will find Login.aspx and Login.ascx.resx (under App_LocalResources) inside it and that are the files you are going to change it. For the DNN authentication files, you can get them at: /admin/Users/user.aspx and /admin/Authentication/login.aspx
Make sure you didn’t mixed up with login.aspx in providers.

Step 3: Changing the Text and Words

You can either change it using DNN Language editor which is located in Admin > Language in control panel are directly look for the files in FTP. I actually prefer the later method as it is more easier to read and modify using Visual Web Developer.
“Register” “Forgot and Password” at
/httpdocs/admin/Authentication/App_LocalResources/Login.ascx.resx
*If you have more than one portal, the file name will be “Login.ascx.Portal-0”

<data name="Remember.Text" xml:space="preserve">
     <value>Remember Login</value>
 </data>
 <data name="cmdForgotPassword.Text" xml:space="preserve">
    <value>Forgot Password ?</value>
 </data>
 <data name="cmdRegister.Text" xml:space="preserve">
     <value>Register</value>
 </data>

All you need to to change the text inside between the “value” attribute. I’d not recommend you to put html/css into it as it will increase the load time and may messing up xhtml coding standard…

Step 4: Changing the files.

First, we need to deal with the Login Tabs which is using the DNNTabStrip webcontrol. You can find this file at:
/httpdocs/admin/Authentication/Login.ascx
Inside the file, look for:

<DNN:DNNTabStrip
 ID="tsLogin"
 runat="server"
 TabRenderMode="All"
 CssTabContainer="LoginTabGroup"
 CssContentContainer="LoginContainerGroup"
 DefaultContainerCssClass="LoginContainer"
 DefaultLabel-CssClass="LoginTab"
 DefaultLabel-CssClassHover="LoginTabHover"
 DefaultLabel-CssClassSelected="LoginTabSelected"
 visible="false" />

The Css Classes are located at /Portals/_default/default.css by default. You can either change the css file, override it in skin.css / portal.css or redefine the classes in login.ascx
If you look at the pokerDIY login tabs, you will see that the tabs have been pushed into 2 lines which makes the layout very messy. You can simply widen it by changing the “width=160” to a larger number in the following lines and you will have the problem solved.

<asp:panel id="pnlLogin" runat="server" Visible="false">
     <table cellspacing="0" cellpadding="3" border="0" summary="SignIn Design Table" width="160">

Ok, now you have change the “Register” and “Forgot Password?” text but what about the design? For these, you need to look for “cssclass=”CommandButton” in the following lines located inside the same login.ascx.

<asp:Linkbutton id="cmdRegister" resourcekey="cmdRegister" cssclass="CommandButton" text="Register" runat="server"/>
 <asp:Linkbutton id="cmdPassword" resourcekey="cmdForgotPassword" cssclass="CommandButton" text="Forgot Password?" runat="server" />

We’ll leave the other parts of codes inside the file and CSS coding for a moment. Now we proceed to change another login.ascx which is located in:
/DesktopModules/AuthenticationServices/DNN.ascx
There are few basic things you need to change to make your login looks beautiful which are: The width, Label text/icon, login button, input box and the text inside it. You can find them in these lines:

<dnn:label id="plUsername" controlname="txtUsername" runat="server" resourcekey="Username" />
 <dnn:label id="plPassword" controlname="txtPassword" runat="server" resourcekey="Password" />
 <asp:textbox id="txtUsername" columns="9" width="150" cssclass="NormalTextBox" runat="server" />
 <asp:textbox id="txtPassword" columns="9" width="150" textmode="password" cssclass="NormalTextBox" runat="server" />
 <asp:button id="cmdLogin" resourcekey="cmdLogin" cssclass="DNNLogin" text="Login" runat="server" />

Like many others, you probably thought of removing the stupid help icon in the login page. It is simple if you’re only having a single language website version. All you need is to replace the <dnn:label to standard html code.
If you need to persevered the language resources function, you may substitute the dnn label control into standard asp label control as follow:

<asp:label id="plUsername" controlname="txtUsername" runat="server" resourcekey="Username" />

To change the textbox design as well as the font inside, simply look for <asp:textbox and change the cssclass value and thing applies to <asp:button for the login button.
After you’ve changed all the cssclass value in dnn.ascx, you may proceed to LiveID.ascx and OpenID.ascx using the same method.

Step 5: CSS Styling codes

Now we’ve reached into the hardest part where we need to use css to make a stylish login page. First, I would suggest you to put a new name for each of the value inside the CssClass attribute. This is because the default value are general classes which are shared with other modules and controls in the whole portal.

Best DotNetNuke Hosting Recommendation

ASPHostPortal.com provides its customers with Plesk Panel, one of the most popular and stable control panels for Windows hosting, as free. You could also see the latest .NET framework, a crazy amount of functionality as well as Large disk space, bandwidth, MSSQL databases and more. All those give people the convenience to build up a powerful site in Windows server. ASPHostPortal.com offers DotNetNuke hosting starts from $5/month only. We also guarantees 30 days money back and guarantee 99.9% uptime. If you need a reliable affordable DotNetNuke Hosting, we should be your best choice.



DotNetNuke Hosting With ASPHostPortal :: Step by Step Process to Install The DotNetNuke (DNN)

clock Januarie 26, 2015 06:05 by author Mark

DNN Installation Process

  • Unzip the DNN file.
  • Rename
  • Make Two Folders in side UnZip folder
    • SQLExpress_DBFile
    • Website
  • Move all files inside the Website Folder except SqlExpressFolder.
    • Modify WebConfig.
  • Host it to IIS
    • Open IIS
    • Add new website (exp: DNNDEV.ME)
      • Site name :DNNDEV.ME
      • Provide physical path of dnn(Mark it to website folder under dnn folder)
      • Host name:DNNDEV.ME(same as site name)
  • After adding site you have to provide it permission:
    • Right click website folder > Edit permission > Security
    • Under Security click Edit > ADD > iis apppool\DC700X_DEV5 (your site name)
    • Allow it to All permission
  • Now add it to Host sites
    • Open notepad as Administration > File > Open > Brows (C > Windows32 > Systems > Drivers > host(Select all files) remove Read only permission
    • Now open Host and add 127.0.0.1 DNNDEV.ME (as per your ip and site name)
    • Now save and give it Read only Permission.

Make Data Base for dnn

  • Open SqlServer > Database(right click) >Add new DB > Paste here DNNDEV.ME(original site or host name as in IIS)
  • Open Database > Security > Logins (Create new user)
    • Login Name :DNNDEV.ME
    • Check Sql Server Authentication (nt Windows Auth)
    • Pas :Database,Confirm pass:Database
    • Make Enforce Password Policy Uncheck Then cilck > OK
  • Open DNNDEV.ME > Security > USers (right click) > New USer
    • User Name :DNNDEV.ME
    • Default Scheme : dbo
    • Select both chk to db_owner then click ok

Run DNN from IIS

  • Fill all field as per your back entrys.
  • Change Custom.

Now its running
Template Modify Process

Best Recommended DotNetNuke Hosting

ASPHostPortal.com

ASPHostPortal.com is the leading provider of Windows hosting and affordable DotNetNuke Hosting. DotNetNuke Hosting from ASPHostPortal.com provides a safe, reliable and performance-driven foundation for your DotNetNuke website. DotNetNuke is the perfect Content Management System for managing and developing your website with one of ASPHostPortal’s Hosting plans. ASPHostPortal has ability to support the latest Microsoft and ASP.NET technology, such as: WebMatrix, WebDeploy, Visual Studio 2015, .NET 5/ASP.NET 4.5.2, ASP.NET MVC 6.0/5.2, Silverlight 6 and Visual Studio Lightswitch, ASPHostPortal guarantees the highest quality product, top security, and unshakeable reliability, carefully chose high-quality servers, networking, and infrastructure equipment to ensure the utmost reliability.



DotNetNuke Hosting with ASPHostPortal :: How To Setting up a SQL Server Database Using DNN

clock Januarie 21, 2015 05:59 by author Mark

I always forget the correct set of settings (especially user permissions) for the database when I am trying to throw up a quick DNN site. So I finally decided to script the database creation process.

The following 4 scripts will:

  • Create a login called DNNUSER
  • Create the database
  • Add a user called DNNUSER – attached to the login DNNUSER.
  • Will provide the user DNNUSER with the following roles:
  1. db_datawriter
  2. db_ddladmin
  3. db_securityadmin
  4. db_datareader
  • Create login DNNUSER

USE [master]
GO
CREATE LOGIN [DNNUSER] WITH PASSWORD=N'aSimplePassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

  • Create the database (change the name and paths to what you need)

CREATE DATABASE [DNN5] ON  PRIMARY
( NAME = N'DNN5', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DNN5.mdf' , SIZE = 2048KB , FILEGROWTH = 1024KB )
 LOG ON
( NAME = N'DNN5_log', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DNN5_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'DNN5', @new_cmptlevel=90
GO
ALTER DATABASE [DNN5] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [DNN5] SET ANSI_NULLS OFF
GO
ALTER DATABASE [DNN5] SET ANSI_PADDING OFF
GO
ALTER DATABASE [DNN5] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [DNN5] SET ARITHABORT OFF
GO
ALTER DATABASE [DNN5] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [DNN5] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [DNN5] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [DNN5] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [DNN5] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [DNN5] SET CURSOR_DEFAULT  GLOBAL
GO
ALTER DATABASE [DNN5] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [DNN5] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [DNN5] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [DNN5] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [DNN5] SET  DISABLE_BROKER
GO
ALTER DATABASE [DNN5] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [DNN5] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [DNN5] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [DNN5] SET  READ_WRITE
GO
ALTER DATABASE [DNN5] SET RECOVERY SIMPLE
GO
ALTER DATABASE [DNN5] SET  MULTI_USER
GO
ALTER DATABASE [DNN5] SET PAGE_VERIFY CHECKSUM 
GO
USE [DNN5]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [DNN5] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO

  • Create a DNNUSER user and add the user to the database with the appropriate roles

USE [DNN5]
GO
CREATE USER [DNNUSER] FOR LOGIN [DNNUSER]
GO
USE [DNN5]
GO
EXEC sp_addrolemember N'db_datawriter', N'DNNUSER'
GO
USE [DNN5]
GO
EXEC sp_addrolemember N'db_ddladmin', N'DNNUSER'
GO
USE [DNN5]
GO
EXEC sp_addrolemember N'db_securityadmin', N'DNNUSER'
GO
USE [DNN5]
GO
EXEC sp_addrolemember N'db_datareader', N'DNNUSER'
GO

  • Add the EXECUTE permission to the database

use [DNN5]
GO
GRANT EXECUTE TO [DNNUSER]
GO

Once the database has been setup – you should be able to fly through DNN’s installation.
Other stuff to setup:
Remember to provide the ASPNET user full control to the DNN folder and sub-folders (as the install will be adding files, modifying the web.config, etc) – done via the file system.

Best Recommended DotNetNuke Hosting

ASPHostPortal.com

ASPHostPortal.com is the leading provider of Windows hosting and affordable DotNetNuke Hosting. DotNetNuke Hosting from ASPHostPortal.com provides a safe, reliable and performance-driven foundation for your DotNetNuke website. DotNetNuke is the perfect Content Management System for managing and developing your website with one of ASPHostPortal’s Hosting plans. ASPHostPortal has ability to support the latest Microsoft and ASP.NET technology, such as: WebMatrix, WebDeploy, Visual Studio 2015, .NET 5/ASP.NET 4.5.2, ASP.NET MVC 6.0/5.2, Silverlight 6 and Visual Studio Lightswitch, ASPHostPortal guarantees the highest quality product, top security, and unshakeable reliability, carefully chose high-quality servers, networking, and infrastructure equipment to ensure the utmost reliability.



DotNetNuke Hosting with ASPHostPortal :: Step by Step Perform a Global Find / Replace on the Text / HTML Module in DotNetNuke

clock Januarie 14, 2015 07:49 by author Mark

How to Perform a Global Find/Replace on the Text/HTML Module in DotNetNuke

Today I will explains how to perform a global find/replace on the text/html module in DNN. If you need to replace content that is stored in the Text/HTML module in your DotNetNuke installation you could manually edit every text/html module, but you can also perform a global find/replace on all the content stored in that module through your database using the script below.

Before starting this process, you should make a complete backup of your website and database.
These steps require you to have Microsoft SQL Server Management Studio installed on your computer. 

declare @FIND as nvarchar(MAX)
declare @REPLACE as nvarchar(MAX)
set @FIND = 'ORIGINAL'
set @REPLACE = 'NEW'
update HtmlText set Content = cast(replace(cast(Content as nvarchar(max)),@FIND, @REPLACE) as ntext)

  • Open Microsoft SQL Server Management Studio and connect to your database.
  • Click on the New Query button.
  • Copy and paste the following script into the New Query window replacing ORIGINAL with your original value and NEW with the new value, please see the note below for information on these values.
  • Click Execute.

Notes
When you are deciding what you want to find and replace, it is best to always be as exact as possible in order to avoid making unintended replacements.  For example, let's say that you recently moved a DotNetNuke website from a virtual directory named /DotNetNuke into the root.    
                                                                                     

You want to update all links so that they remove DotNetNuke.There are a couple different ways that you may be tempted to do this:

Bad
@Find = 'DotNetNuke'
@Replace = ''

The problem with this is that it will find all copies of the word 'DotNetNuke' and replace it with nothing.  With this script, it will replace all instances of 'DotNetNuke', not just ones that are in URLs, so if you have content on your page about DotNetNuke, you'll lose this content.

Acceptable
@Find = '/DotNetNuke/'
@Replace = '/'

This script is better, however, it is not perfect.  Most likely, anywhere that /DotNetNuke/ is listed, it will be part of a URL, however, it won't necessarily be completely accurate.  For example, let's say that you have a URL such as /DotNetNuke/AreasOfExpertise/DotNetNuke/DotNetNukeProjects.aspx when the script above is run, the URL will be shortened to /AreasOfExperties/DotNetNukeProjects.aspx which is most likely not what you would have wanted.

Best
@Find = '&quot;/DotNetNuke/'
@Replace = '&quot;/'

This script is much better because it has the &quot; at the beginning. (This is the encoded version of the double-quote charater).  This is the best is because all URL references are going to follow a pattern similar <a href="/DotNetNuke/Page.aspx">Link</a> or <img src="/DotNetNuke/images/MyImage.gif" /> so we can safely assume that all URLs start with a quote followed by /DotNetNuke/.

TOP Recommended DotNetNuke 7.3.4 Hosting

ASPHostPortal.com is a windows-based hosting service provider. ASPHostPortal.com offers the most reliable and stable DotNetNuke 7.3.4 web hosting infrastructure on the net with great features, fast and secure servers. DotNetNuke 7.3.4 Hosting from ASPHostPortal.com provides a safe, reliable and performance-driven foundation for your  website. ASPHostPortal has ability to support the latest Microsoft and ASP.NET technology, such as: WebMatrix, WebDeploy, Visual Studio 2015, .NET 5/ASP.NET 4.5.2, ASP.NET MVC 6.0/5.2, Silverlight 6 and Visual Studio Lightswitch, ASPHostPortal guarantees the highest quality product, top security, and unshakeable reliability, carefully chose high-quality servers, networking, and infrastructure equipment to ensure the utmost reliability. 



DotNetNuke 7.3 Hosting - ASPHostPortal.com :: How To Fixing PortalSettings issue on multilingual Websites in DNN 7.3.2

clock Desember 5, 2014 08:33 by author Ben

How To Fixing PortalSettings issue on multilingual Websites in DNN 7.3.2

Today I will share about How to fixing issue on multilingual website in DNN 7.3.2.
DNN 7.3.2 enhanced the stored procedure for saving Site Settings to add multilanguage support, unfortunately it missed to include proper handling of language specific settings within the business layer and some other aspects. As effect, DNN 7.3.2 fails to load site settings for multilingual sites and renders an error message.
I created a full solution to add localization support for website settings, which is scheduled to be included with DNN 7.4.0, meanwhile you may run the script below from Host > SQL, in order to fix this issue.

"NOTE: DO NOT APPLY TO DNN 7.4.0 OR LATER"

This fix is also included in TurboDNN 0.9.3 ff. - the solution to improve database performance of DNN, which might be downloaded for free from here. (Please take the time to read instructions enclosed.)

-- ensure, last modified is not Null (should not exist)
UPDATE {databaseOwner}[{objectQualifier}PortalSettings]
 SET   LastModifiedOnDate = '2000-01-01'
 WHERE LastModifiedOnDate is Null
GO
IF OBJECT_ID(N'{databaseOwner}[{objectQualifier}GetPortalSetting]', N'P') IS NOT NULL
    DROP PROCEDURE {databaseOwner}[{objectQualifier}GetPortalSetting]
GO
CREATE PROCEDURE {databaseOwner}[{objectQualifier}GetPortalSetting]
    @PortalID    Int,     -- Not Null
    @SettingName nVarChar(50), -- Not Null
    @CultureCode nVarChar(50) -- not Null
AS
BEGIN
 SELECT TOP (1)
 SettingName,
 CASE WHEN Lower(SettingValue) Like 'fileid=%'
 THEN {databaseOwner}[{objectQualifier}FilePath](SettingValue)
 ELSE SettingValue
 END   AS SettingValue,
 CreatedByUserID,
 CreatedOnDate,
 LastModifiedByUserID,
 LastModifiedOnDate,
 CultureCode
 FROM  {databaseOwner}[{objectQualifier}PortalSettings]
 WHERE PortalID    = @PortalID
   AND SettingName = @SettingName
 ORDER BY LastModifiedOnDate DESC
END
GO
IF OBJECT_ID(N'{databaseOwner}[{objectQualifier}GetPortalSettings]', N'P') IS NOT NULL
    DROP PROCEDURE {databaseOwner}[{objectQualifier}GetPortalSettings]
GO
CREATE PROCEDURE {databaseOwner}[{objectQualifier}GetPortalSettings]
    @PortalId    Int,            -- not Null!
    @CultureCode nVarChar(20)    -- not Null!
AS
BEGIN
 SELECT
 SettingName,
 CASE WHEN Lower(SettingValue) Like 'fileid=%'
 THEN {databaseOwner}[{objectQualifier}FilePath](SettingValue)
 ELSE SettingValue
 END   AS SettingValue,
 CreatedByUserID,
 CreatedOnDate,
 LastModifiedByUserID,
 LastModifiedOnDate,
 CultureCode
 FROM  {databaseOwner}[{objectQualifier}PortalSettings] P
 JOIN  (SELECT PortalID, SettingName SN, Max(LastModifiedOnDate) MD
        FROM {databaseOwner}[{objectQualifier}PortalSettings]
 WHERE PortalID = @PortalId
 GROUP BY PortalID, SettingName) S
   ON P.PortalID = S.PortalID AND P.SettingName = S.SN AND P.LastModifiedOnDate = S.MD;
END
GO

UPDATE: this fix has been included with DNN 7.3.4, you shouldn't need it, if you upgraded to 7.3.4 and don't apply it to DNN 7.4.0 or later.



DotNetNuke Hosting with ASPHostPortal.com :: GetTab Method without DNN Context

clock November 30, 2014 20:22 by author Mark

GetTab Method without DNN Context

As you know, the simple method GetTab(int tabid) was obsolete and has been replaced by GetTab (ByVal TabId As Integer, ByVal PortalId As Integer, ByVal ignoreCache As Boolean). If you want to call the new method, we have to pass the additional parameter “PortalId”.
In common,  the object PortalSettings can be easy to get with DNN context, such as special dnn module & page; however, it may be inaccessible in some sceneries, such as separate aspx page or handler. Then is there any way to get the correct tab info with this new method? Now there is a simple trick to do it with passing into Null.NullInteger as the parameter PortalId. So the coding looks like that:

var tabController = new TabController();
var blogPage = tabController.GetTab(tabID, Null.NullInteger, false);

Deeping into the source code, you will find out that it always tries to get the correct PortalId for this tab/page object:

//if we do not know the PortalId then try to find it in the Portals Dictionary using the TabId
portalId = GetPortalId(tabId, portalId);
//if we have the PortalId then try to get the TabInfo object
tab = GetTabsByPortal(portalId).WithTabId(tabId) ??
        GetTabsByPortal(GetPortalId(tabId, Null.NullInteger)).WithTabId(tabId);

Hope this trick & tip helps if someone has the same issue.

 



DotNetNUke 7.3 Hosting with ASPHostPortal.com :: TIPS Getting rid of spam users

clock November 18, 2014 06:14 by author Mark

Quick tips : Getting rid of spam users

After getting a couple of questions, I'd like to provide options for getting rid of spam users, which is cumbersome via UI, if thousands of registration have been added by a bot.
Unfortunately, it is not as easy as just deleting items from a single table, as user Information is distributed in multiple tables inside the database, therefore we need.
You are in a comfortable situation, if your site is using verified or private registration - in this case all spam users are unauthorized and you simply need to hit "delete unauthorized users" in Admin > User Accounts.
In all other cases, you will need to identify the users to delete from the database and mark as "deleted", in order to use "remove deleted users" (hard-delete) those users from all tables.

ALWAYS START WITH A DATABASE BACKUP!!

If your site only has a host and admin user you would run the following statement inside Host > SQL (check "run as script" in all DNN versions prior to 7.3):
UPDATE {databaseOwner}[{objectQualifier}UserPortals]
 SET   isDeleted = 1
 WHERE UserID NOT IN (SELECT UserID FROM  {databaseOwner}[{objectQualifier}Users
                                    WHERE isSuperuser = 1 OR UserName Like 'Admin')
If you may identify all users by registration date, e.g. since first of November, you would run
UPDATE {databaseOwner}[{objectQualifier}UserPortals]
 SET   isDeleted = 1
 WHERE UserID NOT IN (SELECT UserID FROM  {databaseOwner}[{objectQualifier}Users]
                                    WHERE isSuperuser = 1 OR UserName Like 'Admin' or CreatedOnDate < 2014-18-11)

Of course, this will become more difficult, if regular users registered the same time. You may consider creating a role "verifiedUsers" and move all regular users manually into this group. Now the command would look like


UPDATE {databaseOwner}[{objectQualifier}UserPortals]
 SET   isDeleted = 1
 WHERE UserID NOT IN (SELECT UserID FROM  {databaseOwner}[{objectQualifier}Users]
                                    WHERE isSuperuser = 1 OR UserName Like 'Admin' or CreatedOnDate < 2014-18-11)
   AND UserID NOT IN (SELECT UserID FROM {databaseOwner}[{objectQualifier}vw_UserRoles]
                                    WHERE RoleName Like 'verifiedUsers')


Afterwards you may use "Remove Deleted Users" link in Admin > User Management, to delete all rows.
For DNN Versions prior to DNN 7.3.1, you need to delete user folders manually, which reside nested inside users subfolder of the portal folder. Unfortunately, it is difficult to identify all folders from deleted users, but you may delete all empty folders without subfolder and files inside, as the folder for a still existing user will be re-created, once the user logs in again for the first time. You may use the following command (sing a command line on the server, while being inside the users folder)
for /f "delims=" %i in ('dir /ad /s /b') do @rd "%i"
Finally, you should enter file manager in DNN Admin menu and perform a recursive sync to get rid of all folder entries and folder permissions in the database



DotNetNuke 7.3 Hosting with ASPHostPortal.com :: Skinning Responsively The DDR Menu with Bootstrap for DotNetNuke

clock Oktober 7, 2014 06:01 by author Ben

With all the introduction of the DDRMenu to DotNetNuke, we've experienced much more manage above what is rendered from the menu. This has authorized for a a lot more semantic menu and custom made styling for easy menus to mega menus. There are numerous methods to create the template that the DDR makes use of but we'll be using the token primarily based templating because it is quite easy.


Menu Template (Bootstrap Nav)

I copied the easy folder from your Gravity pores and skin that will come with DNN 7, which incorporates a manifest file “menudef.xml” and the “SimpleToken.txt” file. I updated the SimpleToken.txt file as follows:
Notice: this isn’t a tutorial on DDRMenu, just how to apply Bootstrap.

<ul class="nav nav-pills">
    [*>NODE]
    </ul>
    [>NODE]
        <li class="[?NODE]dropdown [/?][?SELECTED]active[/?]">
        [?ENABLED]
            <a href="[=URL]">[=TEXT] [?NODE]<b class="caret"></b>[/?]</a>
        [?ELSE]
            <a href="#">[=TEXT] [?NODE]<b class="caret"></b>[/?]</a>
        [/?]
        [?NODE]
            <ul class="dropdown-menu">
            [*>NODE]
            </ul>
        [/?]
        </li>
    [/>]

  1. Add the classes nav and nav-pills to the outer ul. Individually, I favor the simplicity in the Simple tablets nav that bootstrap gives. This appears to be the easiest to override with my own custom design and style as I have a tendency to use more flat UI’s in my style.
  2. Include the category “dropdown” for the list merchandise if it's youngsters using the [?NODE] examination.
  3. Add the category “active” for the listing product whether it is selected utilizing the [?SELECTED] examination.
  4. Add a caret to the merchandise if it's a baby item.

Up coming, we are able to include the HTML and pores and skin object within the pores and skin as follows:


Logo and Menu pores and skin objects (Bootstrap Navbar)

<div class="navbar">
        <div class="navbar-inner">
            <span class="brand">
                <dnn:LOGO runat="server" id="dnnLOGO" />
            </span><!--/Logo-->
            <dnn:MENU MenuStyle="Simple" runat="server"></dnn:MENU>
        </div><!-- END navbar-inner -->
    </div><!-- END navbar -->


  1. add link with class “btn” and btn-navbar”. Also, requires markup for collapse. You are able to use either JavaScript or information attributes.
  2. Wrap dnn:MENU pores and skin item using a div using the adhering to class
    “nav-collapse” and “collapse” - this permits the menu to break down at smaller display screen sizes
    “pull-right” to drift the menu to the correct side, if you so desire.

 

Note: making use of this process will disable a menu merchandise which has children. In order that this is a click to open up motion. This can be to make things function much better for contact units.



About ASPHostPortal.com

We’re a company that works differently to most. Value is what we output and help our customers achieve, not how much money we put in the bank. It’s not because we are altruistic. It’s based on an even simpler principle. "Do good things, and good things will come to you".

Success for us is something that is continually experienced, not something that is reached. For us it is all about the experience – more than the journey. Life is a continual experience. We see the Internet as being an incredible amplifier to the experience of life for all of us. It can help humanity come together to explode in knowledge exploration and discussion. It is continual enlightenment of new ideas, experiences, and passions

Author Link


 photo ahp banner aspnet-01_zps87l92lcl.png

Corporate Address (Location)

ASPHostPortal
170 W 56th Street, Suite 121
New York, NY 10019
United States

Tag cloud

Sign in