DotNetNuke FCK Provider - Toolbar set basic doesn't exits

Eigentlich finde ich den FCKEditor mal richtig klasse und im Vergleich zum FreeTextBox-Editor deutlich besser zu gebrauchen. Auch die Integration in DNN ist gut gelungen - besonders toll finde ich das Feature unterschiedlichen Benutzergruppen unterschiedliche Toolbar-Sets zur Verfügung zu stellen. Immer wieder haben ich das Problem das Kunden mit Redakteuren arbeiten, die nicht alles mit dem Editor machen sollen. Die Einrichtung ist ja auch eigentlich ganz simple: in der web.config im Abschnitt "FckHtmlEditorProvider" den Parameter "AvailableToolBarSets" modifizieren und die benötigten Toolbarsets per Namen dort bekannt geben. dann im Order "Providers\HtmlEditorProviders\Fck\Custom" die entsprechende Datei fckconfig.js abändern und dort einfach die Toolbars definieren. Glücklich sein! Leider bin ich in den Anläufen heute nicht über den zweiten Punkt hinaus gekommen. Immer wieder habe ich die Meldung - in einer JavaScript Alert-Message- bekommen: "Toolbar set 'basic' doesn't exits" Egal was ich auch gemacht habe (Browsercache gelöscht, Webserver angehalten, die Konfigurationsdateien web.config und fckconfig.js angepasst) hatte keinen Einfluss darauf. Immer wieder wurde mir diese Meldung ausgegeben. Allerdings nur, wenn ich mich mit den Rechten einer ganz speziellen Gruppe angemeldet habe, die nur auf einem Modul Editierrechte hatte... hm, dabei sollten die eigentlich nicht mit dem Toolbar-Set Basic sonder mit Redaktion-xyz arbeiten. Nach langen hin und her, analysieren vom Quellcode des DNN FCK-Providers, etc. habe ich dann folgendes probiert: Den Dialog "Individuelle Editoreinstellungen" aufrufen: Dann habe ich unten aus der Auswahlliste Instanz, Modul, Portal ausgewählt (natürlich hintereinander) und habe auf "löschen" geklickt. Dazu muss man nun wissen das im engl. dort "clear" steht und "löschen" finde ich ein wenig unschön übersetzt.  Nachdem ich mir nun allen Mut zusammen gekommen habe .. hab ich einfach darauf geklickt und damit dann die kompletten Einstellungen  zurück gesetzt. Anschließend konnte ich für das Portal die Berechtigungen neu setzen und jetzt: BIN ICH GLÜCKLICH und der Editor arbeitet wie gewünscht mit DotNetNuke zusammen ... :)    

Neues Administrationskonzept bei DotNetNuke

Folgendes habe ich gerade auf der DotNetNuke Seite gelesen und mich sehr darüber gefreut. Im wesentlichen geht es dabei um eine Neustrukturierung des Administrationkonzeptes. Zukünftig soll es möglich sein auch selber Administrationsmodule zu entwicklen und diese dann einfach in das Admin-Menü mit aufnehmen (ohne Eingriffe in die Datenbank). Ganz spannend finde ich auch, dass man die Berechtigung für die einzelnen Admin-Seiten auch endlich über die ganz normalen Seitenberechtigung steuern kann. Damit ist es dann super easy einzelnen Leuten (Gruppen) die Berechtigung für div. Adminseiten zu erteilen. Ich bin gespannt was die Zukunft hier bringt - hört sich auf jeden Fall gut an. Den Artikel (Blogeintrag) gibt es hier...    

Download von DotNetNuke 4.8.0

Auch während Weihnachten war das DNN-Core-Team wohl nicht ganz untätig und hat am 27.12.2007 den Download der DotNetNuke Version 4.8.0 frei gegeben. Es wurden viele Fehler korrigiert und neu ist der Support von DNN für den IIS (Internet-Information-Server) 7.0. Wer sich einen genauen Überblick von den Änderungen der aktuellen DNN Version machen möchte - Bitteschön, wie immer geht das im Bugtracking System support.DotNetNuke.com

DotNetNuke 4.7.0 steht als Download bereit

Also zunächst mal: Ich lebe noch ;-) Auch wenn mein Blog in den letzten Wochen eigentlich etwas anderes vermuten läßt. In den letzten Woche stecke ich in einem größeren Projekt wo ich DotNetNuke und die WCF (Windows Communication Foundation) mit einander kombiniert habe, um ein Videoportal (so in Richtung youtube, myvideo, etc.) zu entwicken. Doch dazu später hoffentlich mehr.... Seit heut steht DotNetNuke 4.7.0 zur Verfügung und wurde für die Öffentlichkeit als Download bereit gestellt. Dieses wurde pünktlich zur US-Konferenz OpenForce'07 bekannt gegeben. Dabei finde die neuen benutzerfreundlichen URLs sehr spannend. Leider komme ich im Augenblick noch nicht dazu, diese zu testen. :(  

Neues Authentifizierungssystemen bei DotNetNuke (LiveId, OpenId, CardSpace)

In der kommenden Version von DotNetNuke (DNN 4.6.0) ist ein sehr interessantes Feature die Möglichkeit der Implementierung von neuen Authentifizierungssystemen jenseits von DNN. Nun ist es nicht nur mehr möglich sich gegen DotNetNuke oder einer ADS (Active Directory Service) zu authentifizieren, sondern eine Anmeldung kann nun durch: Cardspace LiveID OpenID Dafür wurde ein "neues" Providermodell für die Authentifizierung implementiert. In den letzten Tagen habe ich für einen Kunden bereits einen eigenen Provider für eine Anmeldung bei der zentralen Golf-Online-Seite erstellt und erste positive Erfahrungen damit gesammelt. Dafür muss man lediglich drei UI-Komponenten entwickeln: Login, Settings and LogOff – jeweils von Basisklassen abgeleitet (AuthenticationLoginBase, AuthenticationSettingsBase and AuthenticationLogOffBase). Die Konfiguration der einzelnen verfügbaren Provider wird über die Tabelle Authentication vorgenommen. Dort wird ganz einfach ein Prefix und die drei UI-Komponenten angegeben. Es ist auch möglich dem Benutzer die Auswahl selber zu überlassen, mit welchem Dienst er sich Authentifizieren möchte – das find ich insgesamt schon ziemlich sexy. Wenn sich der Benutzer über z.B. LiveID angemeldet hat, dann wird nach erfolgreicher Authentifizierung ein Benutzerkonto angelegt oder aber man kann diesen Login mit einem existierenden DNN-Benutzerkonto verknüpfen. In der Datenbank gibt es dafür die Tabelle: UserAuthentication

Alternatives ControlPanel / DotNetNuke Adminpanel

Das Core-Team von DotNetNuke hat in den letzten Versionen schon einiges an der Usability verbessert. Darunter gehört z.B. die Vererbung von Seiten-Rechten innerhalb der Seitenstruktur. In vielen Projekten höre ich aber immer wieder, dass das ControlPanel (dort wo z.B. die Module ausgewählt werden) nicht flexibel genug ist und es Vorteilhaft wäre, wenn man anhand der DotNetNuke spez. Rollen die Funktionen ganz gezielt freischalten kann. Somit könnte man bestimmten Rollen ganz gezielt lediglich ein paar Module zur Verfügung stellen, die diese für ihre tägliche Arbeit benötigen. Der Vorteil liegt ganz klar auf der Hand: Die Komplexität für die Redaktuere wird reduziert. In vielen Fällen werden ja wirklich nur ganz wenige Module für die normale Arbeite benötigt (z.B.Text/HTML, Links, Images). Seit ein paar Monaten verfolge ich eine Projekt, dass das DotNetNuke ControlPanel ersetzt (oder viel mehr eine Alternative bereit stellt). Mit diesem ControlPanel ist es nun endlich möglich die Berechtigungen innerhalb des Controlpanels sehr gezielt zu vergeben. Hier kann man das Modul downloaden Leider gibt es keine SourceCode Version von diesem Modul.

Die DotNetNuke WebControls / DNN NavigationProvider

Im Augenblick beschäftige ich mich mit dem DNN NavigationProvider. um für einen Kunden ein CSS basiertes Menu zur Verfügung zu stellen. Ursprünglich dachte ich eigentlich, dass man auf das Rendern des Menüs Einfluß hat und bestimmen kann, wie das Menu auszusehen hat.Nachdem ich den Sourcecode der mitgelieferten Provider analysiert habe .. kam zunächst recht schnell die Ernüchterung. Da wird in der class DNNMenuNavigationProvider auf eine Objekt vom Typ DNNMenu zugegriffen. Doch der Sourcecode scheint davon nicht mit im Standarddownload enthalten zu sein. Mein erster Schreck - das ich das Rendern gar nicht beeinflussen kann - ging schnell vorbei. Zum einem ist natürlich die Klasse DNNMenu in dem Downloadpaket DotNetNuke WebControls enthalten und zum anderen ist die Nutzung dieses Objektes ja gar nicht notwendig. Jetzt werde ich mal versuchen meinen eigenen Menuprovider zu entwicklen und bin gespannt wie das klappt!

DotNetNuke 4.5.2 Released

Nachdem ich eigentlich schon wieder viel zu lange nichts mehr über DNN veröffentlicht hab, möchte ich damit nun endlich wieder beginnen. Am 29.05 (also gestern) wurde die Version 4.5.2 veröffentlicht und steht wie gewohnt unter www.dotnetnuke.com zum Download bereit. Mittlerweile ist eine ganze Menge an neuen Features implementiert wurden und eine einzelne Aufzählung wäre mit Sicherheit zu lang(weilig). Einen sehr genauen Einblick über die Veränderungen innerhalb von DotNetNuke bekommt man wie immer in der Bug Tracker.  

DNN PopUp Kalender / Fehler mit IE 7.0

Nachdem ich nun mein neues Notebook habe und mir ein komplett neues System aufsetzen musste - bekam ich plötzlich einen ganz seltsamen Fehler bei DotNetNuke und der Verwendung des PopUp Kalenders. Hier wurde das Datum wahlweise mal im richtigen und dann mal wieder im falschen Format zurück gegeben.Nur zur Erklärung: Das richtige Datumsformat ist für mich das deutsche (weil deutsche Anwendung) also dd.MM.yyyy aber ich bekam immer wieder folgendes m/d/yyyy. Zunächst dachte ich daran, das die es ein Konfigurationsfehler sei bzw. ich mir irgendein englisches Servicepack installiert habe (ja, ich geben zu: Ich hab ein deutsches Betriebssystem - sorry). Aber auch nach erneuter Installation des DotNet Frameworks, war keine Besserung in sicht :( Dann hab ich ein wenig im Forum von DNN gesucht in bin da auch recht schnell auf eine Lösung gekommen: Wer ein ähnliches Problem hat sollte ganz einfach in der Javascript-Datei "~/js/PopupCalendar.js" folgende Zeile verändern: anchorVal = "<A HREF=\"javascript:window.opener.calPopupSetDate(window.opener.popCalDstFld,'" + (thisMonth+1) + "/" + monthDate + "/" + thisYear + "');window.opener.closeCalPopup()\">"; zu anchorVal = "<A HREF=\" window.opener.calPopupSetDate(window.opener.popCalDstFld,'" + constructDate(monthDate,thisMonth+1,thisYear) + "');window.opener.closeCalPopup()\">"; Durch die Verwendung von "constructDate" wird sichergestellt, dass auch auf jeden Fall das richtige Format zurück geliefert wird, wenn ein Anwender im DotNetNuke Popup Kalender darauf klickt! In der Version 4.4.0 ist dieser Fehler laut Gemini-Report behoben ... für alle anderen installierten Version sollten diese Fix manuell vornehmen!  

Dokumentation der Dotnetnuke Datenbank (ERD) der Version 4.4.0

Wer schon immer mal eine Datenbankmodell-Digramm der DNN-Datenbank haben wollte, kann diese nun einfach downloaden. Die Datenbankstruktur der DNN-Version 4.4.0 wurde dabei dokumentiert. Es stehen drei verschiednen Formate zur Verfügung: PDF VISO HTML Windows-Hilfe Hier gib es den Download des ERD Modells

Performanceoptimierung von DotNetNuke / DNN

Das DotNetNuke mittlerweile einen sehr großen und brauchbaren Funktionsumfang hat muss an dieser Stelle nicht weiter erwähnt werden. Bei der Implementierung alle dieser Features stand aber leider der Punkt Geschwindigkeit (Performance) nie im Mittelpunkt. Das soll nun endlich mit der kommenden Version 4.4.0 verändert werden! Durch folgende Maßnahmen soll die Geschwindigkeit verbessert werden: (1) Code Refactoring (2) Optimierung und verbesserte Einsatz des Caching (3) Assembly Management (4) Database (5) Compression (6) Page State Wer genauer wissen möchte was sich hinter den einzelnen Punkten versteckt kann das im Blogeintrag von Charles Nurse hier nachlesen. Die Ergebnisse der ersten Tests kann man hier nachlesen! Auf die Version 4.4.0 dürfen wir also alle sehr gespannt sein :)

Happy Birthday www.dnnportal.de (die dotnetnuke community)

Gestern ist es mir doch wirklich entgangen :( die Seite www.dnnportal.de wurde gestern zwei Jahre alt und geht nun in die dritte Runde. In dem Forum dieser Seite findet man mittlerweile jede Menge Tips&Tricks rund um DotNetNuke und immer wieder Hilfe von Experten aus dem deutschen Raum :d  

DotNetNuke und entfernen von Profilproperties

Für einen Bekannten habe ich eine DotNetNukeinstallation (4.3.6) aufgesetzt und ihn ein wenig damit spielen lassen. Dabei hat er sich auch ein wenig mit den Profileigenschaften eines Users beschäftigt und diese Modifiziert. Das finde ich doch schon sehr gut und hätte ich mir eigentlich von Anfang an gewünscht .. Da sein Portal lediglich den deutschsprachigen Raum anspricht hat er einfach die Eigenschaft TimeZone gelöscht. Leider findet das DotNetNuke gar nicht witzig und normale Anwender konnten sich ab diesem Zeitpunkt nicht mehr anmelden. Einige Komponenten benötigen diese Profileigenschaft und es kracht ganz schön böse, falls diese nicht im Profil enthalten ist. Also: Vorsicht beim Löschen von Profileigenschaften - lieber ausblenden:)

DotNetNuke 3.3.6 / 4.3.6 steht zum Download bereit

Seit gestern gibt es die aktuelle Version von DotNetNuke auf der offiziellen Downloadseite zur Verfügung. Neben einigen Fehlern, Sicherheitslücken und Peformanceoptimierung wurde auch mal die Datensyncronisation verbessert. Genaue Informationen gibt es wie immer hier. Die Deutsche Übersetzung findet man bei http://www.deutschnetnuke.de/

SqlException: Konflikt der Sortierung fur die equal to-Operation

"Konflikt der Sortierung für die equal to-Operation kann nicht aufgeloest werden." Was will der von mir???? ;-) Nach dem Umzug einer DotNetNuke - Site auf eine anderen Server bekam ich plötzlich im Log Viewer die Fehlermedlung DotNetNuke.Services.Exceptions.ModuleLoadException: Konflikt der Sortierung für die equal to-Operation kann nicht aufgelöst werden. ---> System.Data.SqlClient.SqlException: Konflikt der Sortierung für die equal to-Operation kann nicht aufgelöst werden. at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandType, String commandText, SqlParameter[] commandParameters, SqlConnectionOwnership connectionOwnership) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(String connectionString, CommandType commandType, String commandText, SqlParameter[] commandParameters) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(String connectionString, String spName, Object[] parameterValues) at DotNetNuke.Services.Log.EventLog.DBLoggingProvider.Data.SqlDataProvider.GetLog(Int32 PageSize, Int32 PageIndex) at DotNetNuke.Services.Log.EventLog.DBLoggingProvider.DBLoggingProvider.GetLog(Int32 PageSize, Int32 PageIndex, Int32& TotalRecords) at DotNetNuke.Services.Log.EventLog.LogController.GetLog(Int32 PageSize, Int32 PageIndex, Int32& TotalRecords) at DotNetNuke.Modules.Admin.Log.LogViewer.BindData() at DotNetNuke.Modules.Admin.Log.LogViewer.Page_Load(Object sender, EventArgs e) --- Ende der internen Ausnahmestapelüberwachung --- Nach ein wenig Forschung war die Lösung schnell gefunden. Die SP muss ein wenig verändert werden, damit der Fehler nicht mehr auftritt. Die Stored Procedure "GetEventLog" muss von     CREATE TABLE #PageIndex     (        IndexID        int IDENTITY (1, 1) NOT NULL,        LogGUID    varchar(36)     ) auf    CREATE TABLE #PageIndex     (        IndexID        int IDENTITY (1, 1) NOT NULL,        LogGUID    varchar(36) COLLATE database_default     ) geändert werden. Dann ist wieder alles im Lot!

Ein CSS Menu fuer DotNetNuke 3.x / ASP.NET

Ich möchte jetzt hier gar keine Diskussion lostretten die über das Solpart-Menu herzieht. Fakt ist auf jeden Fall: Das Anpassen des Menü via CSS kann einem wirklich graue Haare bereiten Die Größe des Menü (bezogen auf die HTML Datei) ist sehr groß Die Suchmaschinenfreundlichkeit ist fast nicht gegeben Aus diesen Gründen habe ich ein kleines niedliches CSS-Menu gebaut das mit HTML Aufzählungen, CSS und wirklichen Links (!) arbeitet. Es ist noch kein perfektes Menu aber für meine derzeitigen Einsatzbereich wirklich ausreichend. Ein paar Erweiterungen und Optimierungen müssen da in Zukunft noch implementiert werden. Aber wie bei jedem Projekt gibt es auch hier mal eine Version 1.0. Da ich sehr gerne und eigentlich fast alle DotNetNuke Module in C# entwickel ist auch dieses Modul ist c# geschrieben. Die Einbindung in ein Skin ist relativ simple! Einfach folgendes in das Skin aufnehmen: <%@ Register TagPrefix="gwc" Namespace="GaliNeo.Modules.Framework" Assembly="GaliNeoMenu" %> und dann an der Stelle wo das Menü erscheinen soll: <gwc:GaliNeoMenu runat="server" id="TestMenu"></gwc:GaliNeoMenu> Natürlich läst sich damit so ziemlich jede Menü darstellen das sich mit den HTML Tags UL und CSS formatieren läßt. Hier ist es zunächst ein klassisches Drop-Down Menü....Hier der Download des Source-Codes:GaliNeo.DotNetNukeMenu (1.0.0.0).zip (7,96 KB)

Ein DotNetNuke Skin ohne Table-Tags rein auf DIV/CSS basierend

Ja ja ... i know. Wochenlang habe ich mein Blog vernachläßigt und jetzt jagt ein Beitrag den anderen ;-) Aber irgendwie habe ich mir heute ein wenig Zeit genommen um durch das www zu surfen. Hier ist noch eine Seite, die man keinen DNN Skin Designe vorenthalten sollte: http://www.xhtmlskins.com/ Auf dieser Seite geht es um die Erstellung von DotNetNuke Skins ohne Tabellen. Total sexy :)

Posting Form Data with c#

Letztes Jahr habe ich folgenden Blog-Eintrag verfasst. Darum ging es, wie man ein HTML-Form innerhalb von .NET simulieren kann. Jetzt ist mir gerade aufgefallen, dass der Sourcecode der ausführenden Klasse dafür fehlt. Natürlich ist das der spannende und entscheidene Part für das Post der HTML-Form. Das möchte ich natürlich nicht so stehen lassen und hier kommt der fehlende Part! using System;using System.Net;using System.Web;using System.IO;using System.Text ;namespace GaliNeo.Framework{    public class RemotePost    {        #region Private Members        private System.Collections.Specialized.NameValueCollection Inputs = null ;        private string _sUrl = "" ;        #endregion                public RemotePost()        {            //            // TODO: Fügen Sie hier die Konstruktorlogik hinzu            //            Inputs = new System.Collections.Specialized.NameValueCollection() ;        }        #region Public Methods        public void Add(string sName, double dValue)        {            this.Add(sName, dValue.ToString()) ;        }        public void Add(string sName,int iValue)        {            this.Add(sName, iValue.ToString() ) ;        }                public void Add(string sName,string sValue)        {            Inputs.Add(sName,sValue) ;        }        public string Url        {            get { return _sUrl ; }            set { _sUrl = value ; }        }                public string Send()        {            string sPostData = "" ;            Uri sUri = new Uri(this.Url) ;                    //Wird für evtl. SSL - Verbindungen benötigt            System.Net.ServicePointManager.CertificatePolicy = new trustedCertificatePolicy();            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(sUri);            //User-Agent            request.UserAgent = "GaliNeo OnlineStore" ;            request.Method = "POST";            request.ContentType = "application/x-www-form-urlencoded";                        //Zusammensetzen der Daten für die Übermittlung            sPostData = GetContentToPost() ;                        request.ContentLength = sPostData.Length ;                        Stream writeStream = request.GetRequestStream();                        //Encoding im UTF-8 Format um kompatible zu sein            //UTF8Encoding encoding = new UTF8Encoding(); //UFT-8 funktioniert unter ASP.NET nicht :(            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding() ;                        byte[] bytes = encoding.GetBytes(sPostData);            writeStream.Write(bytes, 0, bytes.Length);            writeStream.Close();            HttpWebResponse response = (HttpWebResponse) request.GetResponse();                        //Überprüft den HTTP-Statuscode            if (response.StatusCode != HttpStatusCode.OK)            {                return "N,-1, HTTPStatuscode:" +response.StatusCode.ToString() ;            }            Stream responseStream = response.GetResponseStream();            StreamReader readStream = new StreamReader (responseStream, Encoding.UTF8);            return readStream.ReadToEnd();                 }        public string GetContentToPost()        {            string sReturn = "" ;            for(int i=0; i< Inputs.Keys.Count;i++)            {                if (sReturn.Length == 0)                {                    sReturn = Inputs.Keys[i] + "=" + Inputs[Inputs.Keys[i]] ;                }                else                {                    sReturn += "&" + Inputs.Keys[i] + "=" + Inputs[Inputs.Keys[i]] ;                }//    if (sPostData.Length == 0)            }//for(int i=0; i< Inputs.Keys.Count;i++)            return sReturn ;        }        #endregion    }}

DotNetNuke 3.3.3 Final Release

Die letzten Monate war es um DotNetNuke ja doch recht ruhig geworden. Mittlerweile kommt aber wieder Leben in den Releasezyklus :) Vor wenigen Tagen wurde die Version 3.3.3 veröffentlich, die als Final Release bezeichnet wird. Hier ist ein Auszug aus den Änderungen (die Orginalfassung findet man unter dotnenuke.com): Membership ManagementCAPTCHA - eine bekannte Technologie, die mehr Sicherheit bei der Anmeldung verspricht. In einem Bild werden Zahlen und oder Buchstaben angezeigt, die der Benutzer bei der Anmeldung eingegben muss. Durch die Darstellung als Bild es es dann nicht mehr so ohne weiteres möglich eine brute force Attacke durchzuführen.Login Redirect - Nach der Anmeldung kann man die User zu einer definierten Seite weiterleitenPassword Generation - Als Administrator kann man nun automatisier ein Passwort für einen Anwender verwegeben.Public Registration - Beim diesem Anmeldetyp wird nun auch eine E-Mail an den Benutzer geschickt - damit kann man den Mißbrauch von Daten vorbeugen.Profile Change Notification - Anwender werde über Änderungen in Ihrem Profil per E-Mail informiert.User Account Creation Notification - Wenn ein Administrator ein Benutzerkonto anlegt, dann können nun die Daten an den entsprechenden Benutzer verschickt werden.Force Profile Update - Der Benutzer kann dazu "gezwungen" werden, nach einem Login sein Profil u verändern.Force Password Change - Bietet die Möglichkeit das der Anwender sein Passwort erneuern muss.Password Complexity - Der Aufbau und die Komplexität der Passwörter lassen sich definieren.Preserve Login Parameters - Wenn ein Benutzer zur Anmeldung geleitet wird, dann wird nun die Herkunftsurl ausgelesen und gespeichert, damit anschließend dahin zurück geleitet werden kann.Automated Verified Registration URL - Der Benutzer bekommt per E-Mail eine URL und sobald er diese aufruft wird das Konto freigeschaltet.User Lockout Notification - Wen ein Benutzerkonto gesperrt wird (durch die falsche Eingabe vom Passwort), bekommt der Administrator darüber eine E-Mail. Role ManagementEffective Date - Ab wann soll eine Rolle gültig sein.Role Groups - Rollen können nun zu Gruppen zusammengefasst werden.UsabilityRich Text Editor - Nun können Verlinkungen zu Seiten im Poral direkt angelegt werden.Newsletter - Die Abenderadresse kann definiert werden. FrameworkAccessDeniedURL - Hierfür kan nu eine Seite definiert werden.PerformanceModule Settings - Seiten und Moduleinstellungen werden nun gecached :). Module Definitions/InstallerModule Definitions - Die Moduledefinition kann nun direkt durch eine *.dnn Datei angelegt werden, ohne eine Zip-Datei hochzuladen.OtherSMTP Settings - Die Portnumber kann angepasst werdenNew Modules - Store, Forums, Blogs, Gallery sind nun Bestandteil der aktuellen Version.

Es ist so weit DNN 3.3.0 steht zum Download bereit

In der Mittagspause noch mit einem Bekannte über DNN diskutiert und das es in der letzten Zeit doch recht still geworden ist .... musste ich gerade feststellen das das Core-Team von DotNetNuke heute das neue Release 3.3.0 zum Download frei gegeben hat. Leider komme ich in den nächsten nicht dazu diese Version zu testen aber in den Foren gibt es dazu bestimmt jede Menge zu lesen - oder auch nicht, wenn alles ohne Probleme verläuft.Es bleibt aber dabei: Zuerst die Installationsanweisung von DotNetNuke lesen und auf jeden Fall eine komplette Datensicherung von Datenbank und Dateisystem durchführen. Die deutsche Übersetzung gibt es wie immer unter Sebastian Leupold.

Parameter aus einem Querystring entfernen.

Gerade habe ich einen interessanten Artikel gefunden der zeigt, wie man einen Parameter aus der Querystringauflistung entfernen kann. Public Sub RemoveQueryString(ByVal Req As HttpRequest, ByVal strKeyToDel As String, ByVal http_Context As HttpContext)Dim nvc As System.Collections.Specialized.NameValueCollection = New System.Collections.Specialized.NameValueCollection(Req.QueryString)Dim sPage As String = Req.ServerVariables("SERVER_NAME") & Req.ServerVariables("SCRIPT_NAME")nvc.Remove(strKeyToDel)Dim strNewURL As String = Req.PathDim sSeparator As String = "?"Dim sKey As StringFor Each sKey In nvcIf sKey <> Nothing ThenDim sValues As String() = nvc.GetValues(sKey)Dim sValue As StringFor Each sValue In sValuesIf sValue <> Nothing ThenstrNewURL &= sSeparatorstrNewURL &= sKey & "=" & sValuesSeparator = "&"End IfNextEnd IfNextIf nvc.Keys.Count < 1 ThenstrNewURL &= "?"End Ifhttp_Context.Current.RewritePath(strNewURL)End Sub Gefunden habe ich den Code unter http://www.codeproject.com

DNN (DotNetNuke) und Transaktionen

Eines meiner größten Probleme - oder sagen wir lieber Sorgen - war bisher, dass DNN keine Transaktionen unterstützt. Es gibt doch immer wieder mal Business-Cases wo man transaktionsicher Daten verarbeiten möchte. Ein typischens Beispiel wäre z.B. eine Online-Shop, wenn es um die Bestellung und gleichzeitige Zahlungsabwicklung geht. Da DotNetNuke in vermutlich in vielen Fällen auf einem Windows 2003 Server betrieben wird, ist die komplette Umgebung schon vorhanden um die Abläufe transaktionssicher zu gestalten. Das Stichwort ist hier "Services without Components". Der Begriff "Services without Components" steht für die Nutzung von COM+-Dienste in .NET-Anwendung ohne Registrierung als Serviced Component (COM+-Anwendung).Klassen: .ServiceConfig and System.EnterpriseServices.ServiceDomain Das folgende Beispiel zeigt eine ganz einfache Implementierung innerhalb einer Methode:                  //Hier wird mit einem Transaktionskontext gearbeitet,                //damit das Handling einfacher wird                ServiceConfig sc = new ServiceConfig();                sc.Transaction = TransactionOption.RequiresNew ;                ServiceDomain.Enter ( sc ) ;                try                {                    //mach was ....                    ContextUtil.SetComplete() ;                }                catch (Exception exc)                 {                    ContextUtil.SetAbort() ;                    throw exc ;                }                finally                {                    ServiceDomain.Leave();                }  

Das Core Team von DotNetNuke bringt ein Shopmodul

Heute hat das Coreteam von DotNetNuke ein weiters Modul frei gegeben. Diesmal handelt es sich um ein Modul das eine Shopfunktionalität abbildet. Bei der Installation sollte man darauf achten das man nicht das Module "Categories" von efficionconsulting installiert hat, denn sonst kommt es zu Konflikten bei der Namensgebung. Diese Hürde einmal genommen ist die weiter Installation kein Problem. Die Funktionalität ist ziemlich Low-Level und an einige Stellen gibt es noch Fehlermeldungen (z.B. bei den Einstellungen). Es gibt aber ein paar ganz gute Ansätze und ich denke das im Laufe der Zeit dieses Modul noch an Funktionsumfang zunimmt.In den nächsten Tagen werde ich wohl auch noch mal in den Source reinschauen ... so einfach aus neugier. Für mich selber ist dieses Modul eher uninteressant, da mein Shop so langsam die Version 1.0 ereicht hat; auch wenn er laut Zeitplanung schon längst fertig sein sollte .. na ja es kommt halt immer anders als man denkt. Mittlerweile ist die Featureliste schon sehr lang - erspare mir diese aber jetzt. Eines der wichtigsten Merkmale ist aber wohl, dass alle öffentlichen Bereiche über Templates pro Portal dynamisch anpassbar sind. Ebenso ist der Bestellprozess über eine XML Workflowbeschreibung komplett frei definierbar. Anpassbarkeit und Konfigurierbakeit ist bei der Implementierung sehr wichtig gewesen. Das erste Projekt wird vermutlich nächste Woche live gehen aber dann nur für eine bestimme Gruppe von Personen.Wer trotzdem mal mehr darüber wissen möchte, kann sich ja bei mir melden. Was mit dem Shop passiert ist noch nicht ganz klar. 

Server Hosting / DotNetNuke Hosting

Eines der doch besten Argumente für die Linux- bzw. PHP-Welt im Webumfeld waren bis vor einiger Zeit immer noch die doch sehr teuren Hostingpakete von Windowsbetriebssystemen. Mittlerweile fallen die Preise ständig und sind auf einem Niveau, wie es auch im Linuxumfeld anzutreffen ist. Das ist besonders für Freunde und Fans von DotNetNuke interessant! Es gibt zwar auch einige Anbieter die ein DotNetNuke Hosting für z.B. 10€ anbiete aber wer gerne Kontrolle über seine System hat sollte sich überlegen einen eigenen Server zu mieten. Nicht nur das man dort der eigene Administrator ist .. man ist bei vielen Punkten nicht auf den Support seinen Providers angewiesen.  Ganz davon abgesehen, dass man auch weiter Anwendungen auf seinem Server unterbringen kann. Ich habe nun schon seit über einem Jahr einen Server bei Strato stehen und bin mit dem Service sehr zufrieden. Wer also ein paar Euro mehr ausgibt bekommt dafür auch deutlich mehr geboten. Ich persönlich möchte das nicht mehr missen. Immerhin läuft auch mein Block darüber und ein paar weitere Anwendungen. Weil ich das Angebot sehr gut finde habe ich oben mal einen Banner eingebaut - wer also einen Buchen will .. einfach klicken :)  

Neuer Version des FCKEditor provider

Am 15 Januar hat Locopon einen neuen alternativen DotNetNuke Provider für den WYSIWYG Editor FCKEditor zum download bereitgestellt. Zu finden under diesem Link.... Dieser Provider ist ein VB.NET OpenSource Projekt (und damit kostenlos) und stellt eine echte Alternative zur FreeTextBox dar - wenn nicht sogar eine besser Lösung. Die einzelnen Features werden auf der Website näher erklärt..... Wer eine deutsche Übersetzung sucht ist auf DeutschnetNuke gut aufgehoben.