Integration in DNN

Last post 05-02-2006, 4:10 PM by Adam. 15 replies.
Sort Posts: Previous Next
  •  07-26-2004, 2:11 AM 1312

    Integration in DNN

    I'm trying to integrate this module in my local dnn installation without success. I'm very interested in this so I downloaded the trial and I'm trying to test it agains a dnn portal.
     
    Can you give a detailed step by step guide on what is needed.
    What I did:
    - copy the cutechat folder on my application folder.
    - create a SqlDataProvider for the chat module similar to the one in the sample app.
    - Add a new module to dnn using the two controls provided
    - add this to my web.config

    <section name="cuteChat" type="CuteChat.ChatConfigurationHandler,CuteChat" />

    <cuteChat WebFilePath="~/CuteChat/" IPAddressPolicy="*" BadWords="," AllowAnonymous="Deny" LoginUrl="~/Login.Aspx" HelpUrl="http://www.cutesoft.net/" LogoUrl="~/CuteChat/images/logo.gif" ExitUrl="~/" Culture="es-ES" ConnectionString="[ConnectionString]" AppSettingKey="ConnectionString">

    <providers defaultProvider="MyProvider">

    <provider name="MyProvider" sqlDataProviderType="VMasanas.DNN.Modules.Chat.SqlDataProvider,VMasanas.DNN.Modules.Chat.SqlDataProvider" />

    </providers>

    </cuteChat>

    - Add the new module to a tab

     
    But I get an error (Error loading module).
    On the help file you mention a file (CuteChat.DNNLib.dll ) that should be downloaded from cutesoft. Is it necessary? If so where is it?
     
    Thanks.

    Vicenç Masanas
    www.disgrafic.com
  •  07-26-2004, 6:01 AM 1313 in reply to 1312

    Re: Integration in DNN

     
    Hi , I am one of the CuteChat team.
     
    We just release a new installer for CuteChat , which directly supports IBS/DNN/Rainbow/AspNetForums/AspNetForums2/SharePoint .
     
    Please download it from
     
    After you deploy CuteChat to DotNetNuke using the installer
    Please do these things to setup the Module Definition and add the Module to one Tab
     
    Login as Host account
    Click menu [Host]-[Module Definitions]
    Click menu [Add New Module Definition]
    Input:
     Module Name: CuteChat
     Description: Let the site live.
    Click [Update]
    Input:
     New Definition: Chat
    Click [Add Definition]
    Click [Add Control]
    Input:
     Title: Chat
     Source: DesktopModules\CuteChat\Rooms.ascx
    Click [Update]
    Click [Add Control]
    Input:
     Key: Edit
     Title: EditRooms
     Source: DesktopModules\CuteChat\EditRooms.ascx
     Type: Edit
    Click [Add Control]
    Back to Home
    Login as Administrator account (optional)
    Select the options on the top of the page:
     Module: CuteChat
     Pane: LeftPane
     Align: Left
    Click [Add]
    Click menu [EditRooms] (on the edit icon of the Chat)
    Input:
     Room Name: Test
    Click [Create New Room]
    Back to Home
    Login as any user (optional)
    Click the room name [Test]
     
    Hope these helps.

     

  •  07-26-2004, 9:02 AM 1314 in reply to 1313

    Re: Integration in DNN

    Are the provider and web.config steps I did before still needed?
    Vicenç Masanas
    www.disgrafic.com
  •  07-26-2004, 9:25 AM 1315 in reply to 1313

    Re: Integration in DNN

    After you deploy CuteChat to DotNetNuke using the installer
    Please do these things to setup the Module Definition and add the Module to one Tab
     
    Please could you provide a step by step procedure to install this. I think this installer is not very friendly. I gave my local dnn folder and it just OVERWROTE my web.config. What should be deployed (manually please!), to which folder, and what is needed on the web.config.
     
    Is there a way to have a 'chat' with your support staff in any of your chat rooms?

    Vicenç Masanas
    www.disgrafic.com
  •  07-26-2004, 10:15 AM 1316 in reply to 1315

    Re: Integration in DNN

    vmasanas,

     
    If you want to install the CuteChat manually, please follow the below steps:
     
    1. Copy the cutechat folder on my application folder and make sure it matches WebFilePath section value
     
    2. Deploying the CuteChat.dll assembly and license file (You can find at CuteChatSample/bin/)
        
       Copy the CuteChat.dll file and the CuteChat.lic file to the \bin directory for the web application that uses the CuteChat.
    3. Deploying the CuteChat.DotNetNukeLib.dll library assembly (You can find at Toolkit/bin/Debug)
       
       Copy the CuteChat.DotNetNukeLib.dll file to the \bin directory for the web application that uses the CuteChat.
     
    4. Deploying the CuteChat.DotNetNukeLib.dll library assembly (You can find at Toolkit/bin/Debug)
       
       Copy the CuteChat.DotNetNukeLib.dll file to the \bin directory for the web application that uses the CuteChat.
     
    5. Make changes to your web.config file.
     
      Below is the web.config we are using:
     
     

    <cuteChat WebFilePath="~/controls/CuteChat/" IPAddressPolicy="*" BadWords="kill,hate"   AllowAnonymous="Allow"

    LoginUrl="~/" Culture="en-US" ConnectionString=""

            <fonts clear="true">

                <add font="Arial"/>

                <add font="Verdana"/>

                <add font="Comic Sans MS"/>

                <add font="Courier"/>

                <add font="Georgia"/>

                <add font="Lucida Console"/>

                <add font="Tahoma"/>

                <add font="Times New Roman"/>

                <add font="Wingdings"/>

            </fonts>

            <providers defaultProvider="DotNetNuke">

                <provider name="DotNetNuke"         sqlDataProviderType="CuteChat.DNNLib.DNNSqlDataProvider,CuteChat.DNNLib"

    userIdentityAdapterType="CuteChat.DNNLib.SqlServerUserIdentityAdapter,CuteChat.DNNLib" />

           </providers>

    </cuteChat>

     

     
    Please note that as you are using the DotNetNuke, you don't need to create your own provider. 
     
    6.Copy the CuteChat module to your DotNetNuke application (you can find the files from CuteChat\Toolkit\Files\DotNetNuke)
     
    Hope it helps.
     
    I will meet you in the chat room in 10 minutes.
     
    Good luck


    asp.net Chat http://cutesoft.net/ASP.NET+Chat/default.aspx
    Web Messenger: http://cutesoft.net/Web-Messenger/default.aspx
    asp.net wysiwyg editor: http://cutesoft.net/ASP.NET+WYSIWYG+Editor/default.aspx
    asp wysiwyg html editor: http://cutesoft.net/ASP
    asp.net Image Gallery: http://cutesoft.net/ASP.NET+Image+Gallery/default.aspx
    Live Support: http://cutesoft.net/live-support/default.aspx

  •  07-26-2004, 10:52 AM 1317 in reply to 1316

    Re: Integration in DNN

    Are you sure this is right? I doesn't work for me.

     
    A couple of things
    - #3 and #4 are the same, have you forgot something else?
    - you need a new section on the web.config for this to work
    -  the <cuteChat  tag is malformed. Al least the /> is missing.
    - Should the connectionsTring be blank?
    - If I'm not wrong this (CuteChat.DNNLib.DNNSqlDataProvider,CuteChat.DNNLib) specifies a type and an assembly. Are you sure this are the names? DNNLib is not on my installation.
     
    If I leave this as you pointed I get:
    FileName:
    FileLineNumber: 0
    FileColumnNumber: 0
    Method: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage
    DatabaseVersion: 2.1.2
    AssemblyVersion: 2.1.2.16001
    PortalID: 0
    PortalName: DotNetNuke
    UserID: 2
    UserName: host
    ActiveTabID: 1
    ActiveTabName: Home
    AbsoluteURL: /chat/Default.aspx
    AbsoluteURLReferrer:
    ExceptionGUID: 0541e884-4ec3-4ca7-a49d-f13acf815935
    DefaultDataProvider: DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider
    Message: ?
    InnerException: System.IO.FileNotFoundException: ? File name: "CuteChat.DNNLib" Server stack trace: at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) at CuteChat.ChatProviderItem.CreateSqlDataProvider(String connectionstring) at CuteChat.SqlServer.SqlDataAccess..ctor() at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase mb, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at CuteChat.SqlServer.SqlDataAccess..ctor() at CuteChat.Defaults.DefaultDataFactory.CreateDataAccess() at CuteChat.ChatConfig.CreateDataAccess() at CuteChat.ChatComponentBase.CreateDataHolder() at CuteChat.ChatComponentBase.CuteChat.ContextBoundModel.IMessageHandlerBase.ProcessMessage(IMethodCallMessage mcm, AspectObjectProxy proxy, MessageHandlerQueue queue) at CuteChat.ContextBoundModel.MessageHandlerQueue.InvokeNext(IMethodCallMessage mcm, AspectObjectProxy proxy) Exception rethrown at [1]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at CuteChat.ContextBoundModel.AspectComponent.Dispose() at _ASP.Rooms_ascx.Page_Load(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain() === Pre-bind state information === LOG: DisplayName = CuteChat.DNNLib (Partial) LOG: Appbase = file:///C:/DNNWeb/chat LOG: Initial PrivatePath = bin Calling assembly : (Unknown). === LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Post-policy reference: CuteChat.DNNLib LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/chat/b3e96910/d3a5d7cf/CuteChat.DNNLib.DLL. LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/chat/b3e96910/d3a5d7cf/CuteChat.DNNLib/CuteChat.DNNLib.DLL. LOG: Attempting download of new URL file:///C:/DNNWeb/chat/bin/CuteChat.DNNLib.DLL. LOG: Attempting download of new URL file:///C:/DNNWeb/chat/bin/CuteChat.DNNLib/CuteChat.DNNLib.DLL. LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/chat/b3e96910/d3a5d7cf/CuteChat.DNNLib.EXE. LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/chat/b3e96910/d3a5d7cf/CuteChat.DNNLib/CuteChat.DNNLib.EXE. LOG: Attempting download of new URL file:///C:/DNNWeb/chat/bin/CuteChat.DNNLib.EXE. LOG: Attempting download of new URL file:///C:/DNNWeb/chat/bin/CuteChat.DNNLib/CuteChat.DNNLib.EXE.
    TargetSite:
    StackTrace:
    HelpLink:
    Source:
     
    If I change DNN to DotNetNuke I get:
    FileName:
    FileLineNumber: 0
    FileColumnNumber: 0
    Method: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage
    DatabaseVersion: 2.1.2
    AssemblyVersion: 2.1.2.16001
    PortalID: 0
    PortalName: DotNetNuke
    UserID: 2
    UserName: host
    ActiveTabID: 1
    ActiveTabName: Home
    AbsoluteURL: /chat/Default.aspx
    AbsoluteURLReferrer:
    ExceptionGUID: c0e7c35b-ee4d-4fe7-86f8-8ff79bd8f045
    DefaultDataProvider: DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider
    Message: Format of the initialization string does not conform to specification starting at index 0.
    InnerException: System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0. Server stack trace: at System.Data.Common.DBConnectionString.GetKeyValuePair(Char[] connectionString, Int32 currentPosition, String& key, Char[] valuebuf, Int32& vallength, Boolean& isempty) at System.Data.Common.DBConnectionString.ParseInternal(Char[] connectionString, UdlSupport checkForUdl, NameValuePair& keychain) at System.Data.Common.DBConnectionString..ctor(String connectionString, UdlSupport checkForUdl) at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) at System.Data.SqlClient.SqlConnectionString.ParseString(String connectionString) at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) at System.Data.SqlClient.SqlConnection..ctor(String connectionString) at CuteChat.SqlServer.SqlDataProvider.get_Connection() at CuteChat.SqlServer.SqlDataProvider.CreateCommand() Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at CuteChat.SqlServer.ISqlDataProvider.CreateCommand() at CuteChat.SqlServer.SqlDataAccess.CreateCommand() at CuteChat.SqlServer.SqlDataAccess.ListRooms(String targetType, String targetId) Exception rethrown at [1]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at CuteChat.IDataAccess.ListRooms(String targetType, String targetId) at CuteChat.ChatSystem.ListRooms(String targetType, String targetId) Exception rethrown at [2]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at CuteChat.ChatSystem.ListRooms(String targetType, String targetId) at _ASP.Rooms_ascx.Page_Load(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain()
    TargetSite:
    StackTrace:
    HelpLink:
    Source:
     

    Vicenç Masanas
    www.disgrafic.com
  •  07-26-2004, 10:57 AM 1319 in reply to 1317

    Re: Integration in DNN

    Working now!
     
    Changes/updates to your guide:
    - You should change DNN to DotNetNuke in all places it appears.
    - In connectionString repeat the same DotNetNuke connectionString
    - run the file CuteSoft\CuteChat\cutechat.sql against the DNN database.
     
     

    Vicenç Masanas
    www.disgrafic.com
  •  07-26-2004, 11:07 AM 1320 in reply to 1317

    Re: Integration in DNN

    vmasanas,

     
    - Should the connectionsTring be blank?
     
    You should put your own connectionsTring into it.
     
    For example, if you install the CuteChat table to a server 192.168.0.100, database name DotNetNuke, user name is test, password is test.  Your connectionsTring  will be as followings:
     

    server=192.168.0.100;database=DotNetNuke;uid=test;pwd=test;

     
    -  If I'm not wrong this (CuteChat.DNNLib.DNNSqlDataProvider,CuteChat.DNNLib) specifies a type and an assembly. Are you sure this are the names? DNNLib is not on my installation.
     
    You are right.  DNNLib is not the right name.
     
    We should use the CuteChat.DotNetNukeLib.dll instead.
     
    Please use the following web.config template:
     

    <configSections>

        <section name="cuteChat" type="CuteChat.ChatConfigurationHandler,CuteChat" />

    </configSections>

    <cuteChat

        WebFilePath="~/CuteChat/"

        IPAddressPolicy="*"

        BadWords=","

        AllowAnonymous="Allow"

        LoginUrl="~/Login.Aspx"

        HelpUrl="http://www.cutesoft.net/"

        LogoUrl="~/CuteChat/images/logo.gif"

        ExitUrl="~/"

        Culture="en-US"

        ConnectionString="server=(local);database=CuteChatSample;trusted_connection=true;App=CuteChat"

    >

        <providers defaultProvider="DotNetNuke">

            <provider name="DotNetNuke"     sqlDataProviderType="CuteChat.DotNetNukeLib.DotNetNukeSqlDataProvider,CuteChat.DotNetNukeLib"

    userIdentityAdapterType="CuteChat.DotNetNukeLib.SqlServerUserIdentityAdapter,CuteChat.DotNetNukeLib" />

           </providers>

    </cuteChat>

     
     
    Keep me poted.

    asp.net Chat http://cutesoft.net/ASP.NET+Chat/default.aspx
    Web Messenger: http://cutesoft.net/Web-Messenger/default.aspx
    asp.net wysiwyg editor: http://cutesoft.net/ASP.NET+WYSIWYG+Editor/default.aspx
    asp wysiwyg html editor: http://cutesoft.net/ASP
    asp.net Image Gallery: http://cutesoft.net/ASP.NET+Image+Gallery/default.aspx
    Live Support: http://cutesoft.net/live-support/default.aspx

  •  07-26-2004, 11:10 AM 1321 in reply to 1319

    Re: Integration in DNN

    Glad to hear this! Let  me know if you have any questions.

    asp.net Chat http://cutesoft.net/ASP.NET+Chat/default.aspx
    Web Messenger: http://cutesoft.net/Web-Messenger/default.aspx
    asp.net wysiwyg editor: http://cutesoft.net/ASP.NET+WYSIWYG+Editor/default.aspx
    asp wysiwyg html editor: http://cutesoft.net/ASP
    asp.net Image Gallery: http://cutesoft.net/ASP.NET+Image+Gallery/default.aspx
    Live Support: http://cutesoft.net/live-support/default.aspx

  •  07-27-2004, 10:58 AM 1327 in reply to 1321

    Re: Integration in DNN

    I've not many time to test in detail but seems very promising ! Just a few questions
    - how can this be integrated into the portal? Without opening a new page and on the same tab where it actualy is.
    - what does each Policy option
    Policy
     
    - what is the configuration settings for just allowing loged users access to the room. Removing all flags but active did not the trick. Other users can still trying to get access and moderators receive a request.
    Flags
     
    - what is the time period for a room log/history to be cleared. Or it is never cleared?
     
     
    A suggestion: provide a detailed guide on what each field does. Also on the configuration page a link back to previous page would be nice.

    Vicenç Masanas
    www.disgrafic.com
  •  07-28-2004, 1:44 AM 1339 in reply to 1327

    Re: Integration in DNN

    vmasanas,

     
    Thanks for the nice words!
     
    - how can this be integrated into the portal? Without opening a new page and on the same tab where it actualy is.
     
    We are working on this issue. I think we can find a nice solution in this week.
     
    A suggestion: provide a detailed guide on what each field does. Also on the configuration page a link back to previous page would be nice.
     
    Thanks for the nice suggestions. That makes good sense. We will make a detail guide in this week. The back button is necessary as well. We will add this soon. But it will be the next week. Sorry for the inconvenience.
     
    We updated the configuration wizard today. Please download the software again.
     
     
     
     
     

    asp.net Chat http://cutesoft.net/ASP.NET+Chat/default.aspx
    Web Messenger: http://cutesoft.net/Web-Messenger/default.aspx
    asp.net wysiwyg editor: http://cutesoft.net/ASP.NET+WYSIWYG+Editor/default.aspx
    asp wysiwyg html editor: http://cutesoft.net/ASP
    asp.net Image Gallery: http://cutesoft.net/ASP.NET+Image+Gallery/default.aspx
    Live Support: http://cutesoft.net/live-support/default.aspx

  •  08-17-2004, 7:51 PM 1537 in reply to 1339

    Re: Integration in DNN

    I am interested in the Cutechat as well for integration in a DNN site.

     
    Can you elaborate on the user authenication..ie if a user is logged into the portal, can the name be passed to the chat? that is the user cannot enter in another nickname?
     
    How does the chat rooms work with DNN roles? that is can the rooms be limited to the roles the user has access to? for instance paid member room/free room etc
     
    regards
    Eric
  •  08-17-2004, 8:07 PM 1538 in reply to 1537

    Re: Integration in DNN

    Hi Eric,
     
    Can you elaborate on the user authenication..ie if a user is logged into the portal, can the name be passed to the chat? that is the user cannot enter in another nickname?
     
    Yes, the user name/user role is automatically be passed to the chat. The embers don't need to enter their username and password again in order to access the chat. 
     
    In the current version, the user can't not change their nick name.
     
    How does the chat rooms work with DNN roles? that is can the rooms be limited to the roles the user has access to? for instance paid member room/free room etc
     
    The admins in Administrators role can create the room, set the policy and manage the chat room.
     
    If you set the room allow anonymous to false, only the Registered Users can access the chat room.
     
    For example, the users need to log in first to access the the member only room
     
    But any users can access the CuteChat Demo room. If ht user hasn't log in, He/she just need to type a nice name to access the chat.
     
    Hope it helps.
     
    Let me know if you have any further questions.
     
     

    asp.net Chat http://cutesoft.net/ASP.NET+Chat/default.aspx
    Web Messenger: http://cutesoft.net/Web-Messenger/default.aspx
    asp.net wysiwyg editor: http://cutesoft.net/ASP.NET+WYSIWYG+Editor/default.aspx
    asp wysiwyg html editor: http://cutesoft.net/ASP
    asp.net Image Gallery: http://cutesoft.net/ASP.NET+Image+Gallery/default.aspx
    Live Support: http://cutesoft.net/live-support/default.aspx

  •  08-17-2004, 8:14 PM 1539 in reply to 1538

    Re: Integration in DNN

    Thanks for the quick reply.

     
    I will download a copy to evaluate on the site live. I currently use magic chat but the users arent too impressed with it, so we are looking at something new
  •  10-17-2004, 1:50 AM 2107 in reply to 1539

    Re: Integration in DNN

    Is there a dashboard integration with DNN so that you could see how many people and their names in a chat room at anyone time? This is an important requirement for me.

     
    :)
  •  05-02-2006, 4:10 PM 18715 in reply to 2107

    Re: Integration in DNN

    It's possible with the CuteChat  version 3.0.
     
    Please download the CuteChat version 3.0 for DNN 3.x and DNN 4.x:
     
    Online Demo:
     
     

     
    Let me know if you have any questions or suggestions.
     

    asp.net Chat http://cutesoft.net/ASP.NET+Chat/default.aspx
    Web Messenger: http://cutesoft.net/Web-Messenger/default.aspx
    asp.net wysiwyg editor: http://cutesoft.net/ASP.NET+WYSIWYG+Editor/default.aspx
    asp wysiwyg html editor: http://cutesoft.net/ASP
    asp.net Image Gallery: http://cutesoft.net/ASP.NET+Image+Gallery/default.aspx
    Live Support: http://cutesoft.net/live-support/default.aspx

View as RSS news feed in XML