Добро пожаловать в мой блог! Изначально он не задумывался как блог 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