Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:


MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Подсветка URL в текстовых полях
Запись от Артем Enot Грунин размещена 19.04.2010 в 10:26
Обновил(-а) Артем Enot Грунин 26.04.2010 в 15:18
Обновил(-а) Артем Enot Грунин 26.04.2010 в 15:18
Теги dom, java script
Простые многострочные поля CRM невыгодно отличаются от аналогичного поля для объекта email. В них нет ни нормального форматирования (не критично) ни подсветки ссылок. Последнее, действительно, не очень удобно - обычно от веб системы ожидают умение отражать активные ссылки. Существуют, тем не менее, и способы обойти эти ограничения. Как правило это делается за счет интеграции в форму JS "визвиг" редакторов через IFrame или динамически подгружая их через DOM. Недавно на форуме была озвучена задача, которая была схожа с моей и так же не требовала развертывания тяжелой артиллерии: "просто сделать кликабельные ссылки!". Перебрав в голове несколько подходов я пришел к следующему:
Данный код следует использовать на OnLoad. Функция UrlPreview принимает в качестве параметров ссылки на заголовок раздела, в который помещено многостраничное поле, и на само поле. Клик по заголовку раздела скрывает поле описания и отображает на его месте форматированный readonly аналог с кликабельными ссылками. На мой взгляд - вполне себе ничего решение, достаточно прозрачное для пользователей.


Код:
// Может отличаться в различных развертываниях системы!!!
// Используйте средства разработчика, чтобы узнать ID элемента для вашей инсталляции!!!
var descSectionId = "{86EB037C-1F69-44b4-920E-7DE3B1641F8C}";
var descSection = crmForm.all[descSectionId];
var descFiled = crmForm.all.description;
descFiled.DataValue = "Please click on section header" +'\n' + "This is sample by Grunin Artem http://www.ics.perm.ru or use ftp://ftp.ics.perm.ru or mailto:agrunin@ics.perm.ru" + '\n' + " space";
UrlPreview(descSection, descFiled);
function UrlPreview(oSection, oField)
{
var UrlField = oField;
var Section = oSection;
var FormatedText;
function init()
{
var descLabel = Section.lastChild.firstChild;
descLabel.style.cursor = "hand";
descLabel.onclick = switchViews;
FormatedText = Section.insertRow(2);
FormatedText.style.display = "none";
var oPRE = FormatedText.insertCell(0);
oPRE.colSpan = UrlField.parentElement.colSpan;
oPRE.rowSpan = UrlField.parentElement.rowSpan;
oPRE.vAlign = "top";
oPRE.style.borderWidth = "1px";
oPRE.id = "textValue";
}
function switchViews()
{
var oFieldStyle = UrlField.parentElement.style;
if (oFieldStyle.display == "none")
{
oFieldStyle.display = "block";
FormatedText.style.display = "none";
}
else
{
FormatDesc();
oFieldStyle.display = "none";
FormatedText.style.display = "block";
}
}
function FormatDesc()
{
var oTextData = UrlField.DataValue;
if (oTextData == null) return;
var urlRegExp = /((?:http:|ftp:|mailto:)(?:[:\w~%{}./?=&@,#-]+))/gim;
var repRegExp = "<a style='text-decoration:underline;color:blue;'href='$1'>$1</a>";
oTextData = oTextData.replace(urlRegExp, repRegExp);
FormatedText.all.textValue.innerHTML = "<pre>" + oTextData + "</pre>";
var oPre = FormatedText.all.textValue.firstChild;
oPre.style.fontFamily = "Tahoma, Verdana, Arial";
}
init();
}
Всего комментариев 0



