.NET-Software-Entwicklung - DotNetNuke - Business-Develoment
# Wednesday, January 18, 2006

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.

 


Wednesday, January 18, 2006 8:38:55 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET | DotNetNuke | Opensource
# Thursday, January 12, 2006

HTML Zeichen aus einem String entfernen

Ich wollte gerade eine Modul etwas benutzerfreundlicher gestalten und bei einem Link im ToolTip einen Kommantar / Vorschau anzeigen. Der Text der im ToolTip angezeigt werden soll liegt im HTML Format vor. Das macht die Ansicht schwer, da im ToolTip keine HTML-Zeichen verarbeitet werden.

Habe mir dann einfach ein paar Regular Expressions geschrieben, die mir helfen sollen den Text vom HTML zu befreien.

string sHTMLToolTip = ..... //HTML Message

sHTMLToolTip = Regex.Replace( sHTMLToolTip, "<(br|p)>", System.Environment.NewLine , RegexOptions.IgnoreCase | RegexOptions.Multiline);

sHTMLToolTip = Regex.Replace( sHTMLToolTip, "<(.|\n)+?>", "", RegexOptions.IgnoreCase | RegexOptions.Multiline);

Ich glaube auf die RegEx muss ich nicht näher eingehen ;-)


Thursday, January 12, 2006 1:04:02 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET
# Tuesday, January 10, 2006

Checkliste zur Webseitengestaltung

Nachdem ich mein Weblog die letzten 14 Tage etwas stiefmütterlich behandelt habe möchte ich diesen Zustand nun endlich wieder beenden und damit zumindest einen guten Vorsatz durchsetzen ;-)

Ich habe vor ein paar Tagen eine sehr interessante Seite für die Gestaltung von Website gefunden. Diese Seite ist nicht nur für Webdesigner interessant sondern richtet sich an alle Menschen, die gerne eine Website betreiben möchten.
Es werden nämlich nicht nur Themen wie HTML, CSS, Frames keine Frames, Hyperlings überprüfen, usw. behandelt sonder auch z.B. rechtliche Bereiche Copyrights (Umgang mit Urheberrechten) oder Disclaimer bis hin zu solchen Themen wie Ergonomie.

Die Seite ist eine große Linksammlung und zu erreichen unter: http://dciwam.de/checkliste/


Tuesday, January 10, 2006 12:17:34 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
Allgemein
# Saturday, December 24, 2005

Wird DotNetNuke kommerziell?

Der Titel ist mit Sicherheit etwas provokativ gestellt; aus folgendem Grund:

In den frühen Morgenstunden des 24.12 kam der zweite Newsletter - finde die Newsletter übrigens super - von DotNetNuke.com. Hauptthema des Newsletter war das "DotNetNuke® Benefactor Program", dabei handelt es sich um en Mehrwert-Programm rund um DotNetNuke. Insgesamt gibt es vier Programmstufen von 99$ - 799$ mit unterschiedlichen Inhalten bzw. Möglichkeiten (Details hier).

Ist das der erste Schritt aus DotNetNuke ein komerzielles Produkt zu machen? Ich denke nein und es ist eine gute Möglichkeit das Projekt auf Dauer zu sichern.
Ob es das Coreteam allerdings hinbekommt ihre Progamm auch so umzusetzen bleibt abzuwarten.

Hans-Peter Schelian (dnnportal.de) hat dazu auch einen Blogeintrag geschrieben und er als offizieller Team Leiter eines DotNetNuke Unterprojekts hat noch mehr Einblick ....

Warten wir ab .....


Saturday, December 24, 2005 10:39:23 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
DotNetNuke | Opensource
# Wednesday, December 21, 2005

Die Website von DoNetNuke wurde auf die Version 3.2.2 umgestellt

Bei mein Besuch der Seite www.dotnetnuke.com hab ich bemerkt, dass die Seite schon unter der Version 3.2.2 läuft. Vielleicht können wir ja auf eine baldige Veröffentlichung dieser Version hoffen und damit auf Behebung von Fehlern ;-)

Mehr Infos über Veränderungen gibt es wie immer unter support.dotnetnuke.com ....


Wednesday, December 21, 2005 4:24:18 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
DotNetNuke
# Saturday, December 17, 2005

Cooler ASP.NET Kalender im Outlookstyle

Habe gerade bei The Code Project ein ziemlich cooles ASP.NET Control gefunden. Damit kann man einen Kalender genau wie in Outlook darstellen:

http://www.codeproject.com/useritems/daypilot.asp

Habe das Control selber noch nicht ausprobiert aber die Demo sieht schon mal sehr vielversprechend aus! Das Beste zu Schluß: Es ist ein OpenSource Projekt ;-)

 


Saturday, December 17, 2005 5:43:12 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET | Opensource
# Sunday, December 11, 2005

Templatesystem Part 3

Eine kleine Änderung habe ich in der Templateengine vorgenommen: Das Control skin aus der der Methode LoadSkin() habe ich nicht nur für diese Methode zur Verfügung gestellt sondern daraus eine protected Variable innerhalb der Klasse gemacht. Somit kann nun die abgeleitete Klasse immer darauf zugreifen und der "Umweg" über sender (siehe Part 2) kann geändert werden.

Ich brauchte das gerade für eine Hilfsmethode die ich nicht nur innerhalb der Methode InitializeSkin aufrufen möchte.

Keine Ahnung warum ich das nicht direkt so gemacht habe!


Sunday, December 11, 2005 11:49:41 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET | DotNetNuke
# Wednesday, December 07, 2005

Outlook als RSS Reader verwenden

Soeben habe ich ein verdammt cooles Tool gefunden, womit ich Outlook als RSS Reader verwenden kann. Es ist unter http://www.attensa.com  erhältlich. Sehr gut ist auch, dass man beim Surfen RSS Abo's direkt über das Kontextmenu des IE oder FireFox mit in die Liste aufnehmen kann. 


Wednesday, December 07, 2005 12:07:05 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
Allgemein
# Tuesday, December 06, 2005

Geburtstag des deutschen DNNPortal

Vor genau einem Jahr hat Hans-Peter Schelian das Portal www.dnnportal.de online gebracht. Mittlerweile hat es zu der Anlaufestelle im deutschsprachigen Raum entwickelt.

Ein ganz dickes und Lob und Dankeschön an Hans-Peter der sehr viel Arbeit und Zeit in dieses Portal investiert. Zum Glückt gibt es mittlerweile aber einige weiter Leute, die im Forum den HP entlasten ;-)

Ich bin sehr gespannt wie die Zukunft von DNN aber natürlich auch die Zukunft vom dnnportal aussieht!


Tuesday, December 06, 2005 10:54:35 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback

# Tuesday, November 29, 2005

Templatesystem Part 2

In meinem ersten Eintrag habe ich beschrieben, wie man eine Grundlage für templategesteuerte DotNetNuke Module erstellen kann.

Heute möchte ich kurz darauf eingehen, wie man innerhalb eines Eventhandler auf Steuerelemente des Templates zugreifen kann. Als Beispiel nehme ich hier einen LinkButton..

protected virtual void btnLogIn_Click(object sender, EventArgs e)
{

    txtBox = (TextBox) ((Control)sender).FindControl ( "txtUserName" );
    if (txtBox != null)
    {
        userName = txtBox.Text ;
    }

}

Der Zugriff erfolgt genau wie bei der InitializeSkin Methode über FindControl. Hier muss man nun lediglich den Parameter sender nehmen und die Methode FindControl darauf anwenden.

 

 


Tuesday, November 29, 2005 4:12:10 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET | DotNetNuke
# Wednesday, November 23, 2005

Mit C# rechnen / dividieren von Integer-Werten als Ergebnis kommt eine Double-Zahlen raus

Ich habe gerade eine Komponente von mir nach C# portiert - voher VB.Net. Übrigens geht das sehr gut mit SharpDevelopment.

Nun ja auf jeden Fall habe ich in VB.Net eine Berechnung gemacht

iPageCount = Convert.ToInt32(System.Math.Ceiling(RecordCount / PagingCount))

Nach C# konveritert sieht das nun so aus:

iPageCount = Convert.ToInt32(System.Math.Ceiling( RecordCount / PagingCount ));

Jetzt muss ich dazusagen, dass die beiden Werte RecordCount und PagingCount von Typ Integer sind. Wenn man nun in C# die Rechnung 6/4 = 1,5 durchführt kommt aber immer 1 raus. Das liegt daran das C# eine typsichere Sprache ist. Wenn man nun ein korrektes Ergebnis haben möchte muss man die beiden Werte zuerst in einen Double Typ umwandeln.

iPageCount = Convert.ToInt32(System.Math.Ceiling( Convert.ToDouble(RecordCount) / Convert.ToDouble(PagingCount) ));

Jetzt kommt bei der Rechnung (RecordCount / PagingCount) auch der gewünschte Wert von 1,5 raus. Durch die Funktion System.Math.Ceiling() wird hier auf den Wert 2 aufgerundet.
(Ergänzung -> siehe Kommentar)


Wednesday, November 23, 2005 10:33:49 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET
# Friday, November 18, 2005

foreach Statement und Hashtable

Durch eine Hashtable kann man nicht direkt via foreach Statement itterieren.

 foreach(ProfileProperty currEntry in objInfo.ExtentedProperty)
 {
    string sUsername = currEntry.Username;
 }

Wenn man so einen Konstrukt abbilden muss dann geht das durch folgenden Umweg:

 ProfileProperty baseProp = null ;
 foreach(System.Collections.DictionaryEntry currEntry in objInfo.ExtentedProperty)
 {
    baseProp = (ProfileProperty)currEntry.Value ;
 }

 

Wichtig ist hierbei das man bei der Typumwandlung currEntry.Value zur Konvertierung nimmt, denn sonst gibt es eine Exception.

 


Friday, November 18, 2005 1:09:22 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET
# Sunday, November 13, 2005

Templatebasierte erweiterte Benutzeranmeldung Part 1

Was mir bei DotNetNuke schon lange nicht schmeckt ist der ganze Login und Registrierungsbereich.

Zum einen habe ich andere Anforderungen - okay dafür kann das Core-Team nichts - zum anderen ist aber die Anpassung des Layout nur für alle Portal gleichzeitig möglich.

Deswegen habe ich mich hingesetzt und ein ein weiters Modul dafür geschrieben. Ja, es gibt zwar schon ein paar aber die unterstützen halt alle nicht ein Templatesystem.

Das Konzept dafür ist relativ einfach: Zur Laufzeit wird die ASCX Datei dynamisch geladen. Entweder wird dabei ein Standardlayout geladen oder aber wenn vorhanden aus dem jeweiligen Portalverzeichnis.
Dafür habe ich eine Klasse SkinnedWebControl geschrieben, die von PortalModuleBase abgeleitet wird.

Die Methode InitSkin() lädt das entsprechende Skin und sorgt dafür das es initialisiert wird.

        protected Control LoadSkin()
        {
            Control skin;
            
            
            skinpath = this.PortalSettings.HomeDirectory + "GaliNeo/UserAccount/" ;             

            // Do we have a skin?
            if (SkinFilename == null)
                throw new Exception("You must specify a skin.");

            
            try
            {
                skin = this.LoadControl(skinpath + this.skinFilename) ;      
            }
            catch (FileNotFoundException)
            {

                try
                {

                     skinpath = this.ModulePath + "UITemplates/" ;

                     skin = this.LoadControl(skinpath + this.skinFilename);
                    
                }
                catch (FileNotFoundException)
                {
                    throw new Exception("Critical error: The skinfile '" + skinpath + "' could not be found. The skin must exist for this control to render.");
                }
            }
            // Initialize the skin
            InitializeSkin(skin);
            Controls.Add(skin) ;


            return skin;
        }

Die Mehtode InitializeSkin() wird dann in der entsprechenden Klasse überschrieben um z.B die Steuerelemente mit entsprechenden Werten zu versehen oder aber auch Events an die Steuerelemente zu binden.

        protected abstract void InitializeSkin(Control skin);

Das entsprechende DotNetNuke Modul UserControl wird dann von der Klasse SkinnedWebControl abgeleiet.

Eine Besonderheit ist der Zugriff auf Steuerelemente. Diese sind nicht direkt ansprechbar sonder müssen zunächst über die Methode FindControl gesucht werden. So könnte das dann aussehen:

        protected override void InitializeSkin(Control skin)
        {

            LabelControl dnnlbl = null ;
            LinkButton lnkbtn = null ;

            dnnlbl = (LabelControl) skin.FindControl("lblUserName") ;
            if (dnnlbl != null)
            {
                dnnlbl.Text = GetLocalization("lblUserName") ;
                
            }

            lnkbtn = (LinkButton) skin.FindControl("lnkBtnLogIn") ;
            if (lnkbtn != null)
            {
                lnkbtn.Text = GetLocalization("lnkBtnLogIn") ;
                lnkbtn.Click += new System.EventHandler(btnLogIn_Click) ;
            }

        }

Die ASCX Datei des Modules sieht ganz normal aus, nur sind dort die Controls nicht definiert. Dafür gibt es die Templatedatei wobei es sich auch um ene ASCX Datei handelt, die aber nicht die Attribute CodeBehind und Namespace benötigt.
Die beiden Controls Label und LinkButton werden in der Template-ASCX wie gewohnt definiert.

 


Sunday, November 13, 2005 11:55:21 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
DotNetNuke
# Thursday, November 10, 2005

Qualified Google Advertising Professional

Wir sind von Google als "Google Advertising Professionals" qualifiziert. Klicken Sie hier für weitere Informationen über Google Advertising Professionals ...

Falls es jemanden Interessiert: Seit einiger Zeit bin ich "Qualified Google Advertising Professional" :)

Und zusammen mit dem ebenfalls "Qualified Google Advertising Professional" Michael Gandke ist das eine weitere Dienstleistung die wir anbieten!

Wer also Bedarf in diesem Bereich hat, einfach einmal melden - hier gibt es weiter Infos dazu... 


Thursday, November 10, 2005 10:20:44 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
Allgemein
# Wednesday, November 09, 2005

Windiff Tool Download inkl. Source Code

Wer das Tool WinDiff sucht hier hier genau richtig ... unter dem Link:http://www.grigsoft.com/download-windiff.htm kann man dieses nützliche Tool runterladen und direkt starten.
Eine Erweiterung gibt es hier:http://www.codeguru.com/Cpp/misc/samples/article.php/c1499

Eine paar Alternative gibt es hier: http://keithdevens.com/downloads/#diff


Wednesday, November 09, 2005 11:12:21 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
Allgemein
# Tuesday, November 08, 2005

DotNetNuke 3.2 und 4.0.0 ist da / DNN fuer ASP.NET 2.0

Soeben bekam ich einen Newsletter vom DotNetNuke-Core Team - eigentlich den ersten überhaupt. Nun ja darin stand das es nun die Version 3.2 von DotNetNuke gibt. Ebenso ist die Version 4.0 also die ASP.NET 2 Version für VS.NET 2005 als Download verfügbar.

Sonst soll es aber zwischen den beiden Versionen keinen Unterschied geben und die nächste Zeit werden wohl beide Versionen weiter gepflegt.

Hier gibt es den kompletten Pressebericht

Dann schau ich jetzt mal, ob die Downloadserver schon überlastet sind :)


Tuesday, November 08, 2005 12:32:57 AM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
DotNetNuke
# Monday, November 07, 2005

Datagrid, DataList, Datarepeater und Radiobuttons

Wer schon mal versucht hat bei einem DataRepeater Radiobuttons hinzuzufügen wird bestimmt ähnliche graue Haare bekommen haben wie ich heute. Die Radiobuttons werden zwar sehr schön angezeigt aber leider funktioniert das Gruppieren von diesen Elementen überhaupt nicht.
Das liegt daran das die Klasse Radiobuttons das Interface  "INamingContainer" implementiert und somit jeder RadioButton einen eigenen Namen bekommt.
Auch das Attribut "GroupName" bleibt ohne Wirkung...

Abhilfe schafft da da ein eigenes ASP.NET Control das unter der URL

http://www.codeproject.com/aspnet/How_group_RButtons.asp

zu finden ist.

Eine Erweiterung für einen Postback gibt es dann noch hier:

http://www.codeproject.com/aspnet/groupradiobuttons.asp

Allerdings funktioniert dieser Postback nicht wirklich und deswegen habe ich einen kleine Trick angewendet .. (achtung! Jetzt wird es kompliziert *lach*):

<GaliNeo:GroupRadioButton AutoPostBack=True  OnCheckedChanged="rbtnProduct_CheckedChanged" id="rbtnProduct" runat="server" GroupName="SelectProd" />

        public void rbtnProduct_CheckedChanged(object sender, System.EventArgs e)
        {
            
            string sCommandArgument = ((GroupRadioButton)sender).CommandArgument ;
            
            Response.Redirect ("http://localhost/dotnetnuke/DesktopModules/GaliNeo/OnlineStore/DashboardAddToCart.aspx?ProductId=" + sCommandArgument, true) ;

        }

Mit dieser Lösung funktioniert das nun einwandfrei .....
Monday, November 07, 2005 7:40:01 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET
# Sunday, November 06, 2005

Generierung von random string Zeichenfolgen

Hier ein kurzer Beispielcode, wie man schnell eine Randomzeichenfolge erstellen kann. Nützlich z.B. für Passwörter oder ähnliches.

Ausbauen kann man diesen Bereich jetzt natürlich noch indem man Buchstaben wahlweise groß oder klein schreibt.

string alphabets = "abcdefghijklmnopqrstuvwxyz";
string numbers = "01234567890123456789012345";
StringBuilder randomstring = new StringBuilder();
Random r = new Random();
for(int j=0; j<=20;j++)
{
   for(int i=0;i<=5;i++)
   {
      randomstring.Append(alphabets[r.Next(alphabets.Length)]);
      randomstring.Append(numbers[r.Next(numbers.Length)]);
   }

}


Sunday, November 06, 2005 5:55:20 PM (W. Europe Standard Time, UTC+01:00)  #    - Trackback
.NET
# Monday, October 24, 2005

Beim DNN Installation SQL-Skript werden Zeichen automatisch entfernt

Nachdem ich ein paar sehr witzige Stunden mit den Installationsroutinen (für Module) von DotNetNuke hatte und schon fast verzweifelt habe, kam eine gute Fee und holte mich da raus ... aber alles hübsch der Reihe nach!

Ich habe ein eigenes Module geschrieben und dieses DNN Module hatte eine wahnsinnige Enterprise Funktionlität - nämlich folgende:

SET newOrderno = ((SELECT MAX(OderNo) FROM TABLE) + 1)

Dieses funktionierte auch einwandfrei, allerdings als ich dann das Modul zusammen packte und es auf einem Server installieren wollte, spuckte die Installation immer einen SQL Fehler aus ... "Fehler in der Nähe von 1"
Ist auch logisch, denn was da ankam sah so aus:

SET newOrderno = ((SELECT MAX(OderNo) FROM TABLE)  1)

Das "+" fehlte also ... um das jetzt hier mal abzukürzen: Es lag an dem Dateiformat .. die Textdatei mit den SQL-Befehlen war als ANSI Datei abgespeichert. Nachdem ich diese Datei im UTF-8 Format abgespeicher hatte war das Problem behoben und das "+" stand im SQL-Befehl...

Zum Glück gibt es das www.dnnportal.de und Hans-Peter, der auch Nachts noch gute Tipps hat :)

 

Nur mal so nebenbei:
Wenn man eine Textdatei z.B. als Templatevorlage ausließt und es fehlen die Umlaute .. ja dann würde ich diese auch mal im UTF-8 Format speichern....dann beim Auslesen der Datei noch das richtige Format angeben und schon ist mal alle Sorgen los!

 


Monday, October 24, 2005 8:51:11 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
.NET | DotNetNuke
# Wednesday, October 12, 2005

Dokumenation der DotNetNnuke Version 3.1.1

Ein Blick in den Downloadbereich hat mir gerade gezeigt, dass es endlich die Dokumentationen zur aktuellen Version von DNN 3.1.1 gibt.

Hier ist der Link in den Downloadbereich: http://www.dotnetnuke.com/tabid/125/default.aspx

Viel Spaß beim Lesen ....


Wednesday, October 12, 2005 1:19:23 PM (W. Europe Daylight Time, UTC+02:00)  #    - Trackback
DotNetNuke