Показаны сообщения с ярлыком dotnetnuke. Показать все сообщения
Показаны сообщения с ярлыком dotnetnuke. Показать все сообщения

четверг, 19 февраля 2009 г.

Как сделать, чтобы приветсвенный е-мейл отправлялся в виде HTML с сайта на базе DotNetNuke?

Для того, чтобы в сайте, созданном на базе DotNetNuke изменить приветсвенный е-мейл, который приходит на почту зарегострировавшегося пользователя (Welcome e-mail) нужно в language editor изменить ресусную строку EMAIL_USER_REGISTRATION_PUBLIC_BODY.Text или EMAIL_USER_REGISTRATION_PRIVATE_BODY.Text, - если регистрация с подтверждением.
Ядро DotNetNuke определяет присутсвие HTML тегов в этих строках и соответственно отсылает e-mail в виде простого текста или в виде HTML.

пятница, 30 января 2009 г.

Как сделать, чтобы в DotNetNuke работала при авторизации опция "Помнить меня"

Опция "Помнить меня" ("Remember Me") при логине на сайте сделанном на DotNetNuke осуществлена посредством размещения зашифрованной аутентификационного куки (cookie) на компьютере пользователя.

Окончане срока действия этого куки контролируется сначением параметра "timeout" в в узле Forms Autentication node в конфигурационном файле web.config.

< name=".DOTNETNUKE" protection="All" timeout="60" cookieless="UseCookies">

Значение по умолчанию 60 минут, поэтому сайт не может "запомнить" кого-либо по истечении этого времени.

Для увеличения времени запоминания аутентифицированных пользователей нужно увеличить значение параметра timeout.

< name=".DOTNETNUKE" protection="All" timeout="22345" cookieless="UseCookies">

Вы можете также установить режим sliding expiration, который подразумевает то, что каждый раз, когда пользователь посещает веб-сайт до истечения срока действия аутентификационного куки, то срок действия этого куки продлевается на величину параметра "timeout". Этот режим включается так:

< name=".DOTNETNUKE" protection="All" timeout="10080" slidingexpiration="true" cookieless="UseCookies">

Посмотреть как это работает можно на этом сайте.

среда, 24 декабря 2008 г.

Как изменить строку "You are here" в сайте на Dotnetnuke чтобы она отображалась по русски

Как изменить строку "You are here" в сайте на Dotnetnuke чтобы она отображалась по русски?

Нужно найти папку /Portals/_defauls/Skins/MinimalExtrophy/App_localResources. Там будет файл index.ascx.resx. Нужно скопировать его в файл index.ascx.ru-RU.resx, а потом в текстовом редакторе открыть этот файл и изменить там строку "You are here" на "Вы здесь".
Такое решение работает для DNN версии 4.9 и выше. Посмотреть ка это работет можно здесь

понедельник, 17 ноября 2008 г.

Ошибка в сайте на Dotnetnuke: System.Web.Configuration.HttpCapabilitiesBase.get_MajorVersion()

Вот уже неделю наблюдаю в журнале сайта, сделанного на CMS Dotnetnuke, сообщение об ошибке:

Message: DotNetNuke.Services.Exceptions.PageLoadException: Value cannot be null. Parameter name: String ---> System.ArgumentNullException: Value cannot be null. Parameter name: String at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Web.Configuration.HttpCapabilitiesBase.get_MajorVersion() at DotNetNuke.UI.Utilities.ClientAPI.BrowserSupportsFunctionality(ClientFunctionality eFunctionality) at DotNetNuke.UI.WebControls.DNNMenu.get_IsDownLevel() at DotNetNuke.UI.WebControls.DNNMenu.LoadPostedXML() at DotNetNuke.UI.WebControls.DNNMenu.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.AddedControl(Control control, Int32 index) at System.Web.UI.ControlCollection.Add(Control child) at DotNetNuke.UI.Skins.NavObjectBase.InitializeNavControl(Control objParent, String strDefaultProvider) at DotNetNuke.UI.Skins.Controls.Nav.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Control.AddedControl(Control control, Int32 index) at System.Web.UI.ControlCollection.Add(Control child) at DotNetNuke.Framework.DefaultPage.Page_Init(Object sender, EventArgs e) at System.Web.UI.Control.OnInit(EventArgs e) at System.Web.UI.Page.OnInit(EventArgs e) at DotNetNuke.Framework.PageBase.OnInit(EventArgs e) at System.Web.UI.Control.InitRecursive(Control namingContainer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace ---

Причем бывает UserAgent: Mozilla и бывает UserAgent: Yandex/1.01.001 (compatible; Win16; F).

Все это похоже на ботов Яндекса и Гугла, хотя, так как в журнале нет IP-адресов, пока это точно не известно. Нужно еще будет проверить лог IIS-а, чтобы это точно узнать. В любом случае как-то некрасиво получается, что можно вот так просто DNN-сайт свалить в эксепшн. А уж тем более, если это Боты, то такой вариант разработчики должны были учесть.

Придется теперь лезть в ядро и ковыряться в vb.NET исходниках. Кто вообще придумал Dotnetnuke писать не на C# ?!!

понедельник, 3 ноября 2008 г.

Как программно изменить название веб-страницы в Dotnetnuke ?

В обычной .aspx странице программно изменить название (title) очень просто:


protected void Page_Load(object sender, EventArgs e)
{
this.Title = "Обычная веб-страница";
}


В DNN модуле такой код не даст ничего. Название страницы будет то, которое сформирует ядро Dotnetnuke.
Но Title страницы на Dotnetnuke все-таки можно без проблем изменить. Делается это так:

protected void Page_Load(object sender, EventArgs e)
{
DotNetNuke.Framework.CDefault page = (DotNetNuke.Framework.CDefault)this.Page;
page.Title = "Веб-страница в Dotnetnuke";
}



Посмотреть как это работает можно здесь: сайт а-класса школа 5 города Ахтырка

вторник, 28 октября 2008 г.

Локализанция CalendarExtender в DotNetNuke

Классная все-таки штука AjaxControlToolkit: щелкнул 2 раза, и у тебя уже календарь на веб-страничке. Кинул себе календарь на форму в своем новом dotnetnuke модуле, немного насторил свойства и зашибись работает. Правда почему-то название месяцев по английски пишет, хотя должен настройки брать из браузера.
Оказалось в DNN как всегда свои заморочки, особенно с AJAX-ом. Чтобы исправить это пишем в модуле так:


protected void Page_Init(object sender, EventArgs e)
{
if (DotNetNuke.Framework.AJAX.IsInstalled())
{
DotNetNuke.Framework.AJAX.RegisterScriptManager();
DotNetNuke.Framework.AJAX.SetScriptManagerProperty(Page, "EnableScriptGlobalization", new object[] { true });
DotNetNuke.Framework.AJAX.SetScriptManagerProperty(Page, "EnableScriptLocalization", new object[] { true });
}
}


И, вуаля: названия дней недели и месяцев в CalendarExtender отображаются по-русски.

вторник, 21 октября 2008 г.

Проблема с ModalPopupExtender в DotNetNuke (DNN) : ModalPopupExtender в Internet Explorer отображается не по центру экрана, а слева вверху

Захотелось мне сделать на AJAX красивые Popup-окошки в одном из разрабатываемых сайтов, чтобы пользователя чувствовали себя как-будто они не на веб-старнице, а в настольном приложении. Сказано - сделано. Используя ModalPopupExtender это проще простого.
Как обычно тестирую в 3-х браузерах: Opera, Internet Explorer и FireFox.
В "Опере" и FireFox-е все работет хорошо, а вот в Internet Explorer-е ModalPopupExtender отображает попап-окно не по центру окна браузера, а слева вверху, причем центр этого окна находится в точке с коодинатами x=0, y=0.

Такое положение дел меня явно не устраивало. Начал поиски причины и решения. Сайт я начал разрабатывать на DNN версии 4.8.4, но потом вышла версия 4.9 и модули (как и сам dotnetnuke) также тестировались на новой версии. Так вот я заметил, что на DNN 4.8.4 вышеописанная проблема наблюдалась, а на DNN 4.9 уже нет!

Оказалось, что причина была в том, что сайт на DNN версии 4.8.4 рендерится браузерами в Quirks mode, благодаря вот этому:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

А вот если посмотреть на страницы сгенерированную DNN 4.9 видим:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

И теперь уже браузеры рендерят станицы в Standarts Compilance Mode (Режим соответствия стандартам). Это радует. Наконец-то и dotnetnuke начинает пытаться соответствовать стандартам. Насколько было бы легче программистам, если бы все последовали их примеру:)

Итак, как говорят в Голливуде : Problem solved. Хочу еще заметить: остерегайтесь установки скинов на свой сайт, так как после этого он, возможно, будет работать не совсе так как он работал до этого:)

Напомню, что прежде, чем использовать у себя в модуле ModalPopupExtender из набора AjaxControlToolkit, необходимо добавить следующую строку в .ascx файле Вашего модуля.


<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>


Кроме того, чтобы AJAX работал в Вашем модуле, нужно в DotNetNuke-освском сайте установить галочку "Supports Partial Rendering?" для Ваших user-контролов, в которых используется AJAX.

среда, 8 октября 2008 г.

В сайте сделанном на Dotnetnuke постоянно пересоздается домен приложения: "The AppDomain shut down because of the hosting environment."

Создал сайт с использованием CMS DotNetNuke. На моей девелоперской машине он работал очень даже шустро. После размещения на американском хостинге заметил, что страницы, особенно первая, открываются очень долго.  Смотрю журнал сайта и вижу, что домен приложения (appDomain) пересоздается несколько раз в минуту. Идут последовательные записи:

Application Shutting Down.  Shutdown Details: The AppDomain shut down because of the hosting environment.

Application Started.

Пересоздание домена приложения операция не быстрая, она и приводит к уменьшению производительности сайта (медленной загрузке страниц).

Так как я не не делал никаких изменений в файлах (в т.ч. конфигурационнных) веб-приложения, а также во вложенных папках проекта, возник вопрос: почему и как с этим бороться?

Имея опыт работы с хостерами знаю, что бывает на хостинге,  в борьбе за ресурсы,  выставяют в конфигах время жизни сессии очень маленькое (sessionState.Timeout). Пишу приложение и проверяю: да, действительно сессия живет не более 10-ти секунд. Пишу письмо в саппорт с просьбой увеличить до 30-ти минут. Сделали.

Теперь вижу, что appDomain уже не умирает так часто, как раньше. Теперь это повторяется раз в 15-20 минут. Так как сайт еще никто не посещает и зная, что домен приложения может уничтожаться при неактивности, пишу windows-службу, которая с интервалом 5 минут делает HTTP GET запрос к сайту . Результат: AppDomain практически не пересоздается. Проблема решена.