Кастомизация
19
Окт
0

Модернизация Объявлений в MS CRM

У CRM есть такой функционал – Объявления – он позволяет Вам объединить и предоставить общий доступ к текстовыми сообщениями всем пользователями CRM. Единственный его недостаток – тело сообщения не поддерживает HTML-код. Вы можете исправить это либо поддерживаемым путем – создав свою аналогичную страницу и прописав ее в ISV.config’е. Либо не поддерживаемым – подправив один исходный файл CRM (который отвечает за отображение объявлений). Ну, писать свою лень 🙂 поэтому – ансапорт форева 🙂

Приступим:

  • Для начала создадим новое объявление, чтобы потом проследить результат модификаций. Перейдите Настройка — Администрирование — Объявления — Создать. Введите произвольный заголовок, а в теле письма напишите:
    <html>
    	<body>
    		<h2>Заголовок второго уровня</h2>
    		<ul>
    			<li>Один</li>
    			<li>Два</li>
    			<li>Три</li>
    		</ul>
    	</body>
    </html>
    

    Сохраните и закройте. Прейдите Рабочая область – Объявления, Вы увидите созданное объявление, именно в таком виде, в каком ввели.

  • Теперь подправим исходный файл. Откройте файл <сайт CRM>\Home\Homepage\home_news.aspx. В нем помимо прочего есть такие строчки:
    <body>
    
    <table width="100%" height="100%">
    <tr>
    <td>
    <table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
    <tr>
    <td>
    <div style="width:100%;height:100%;overflow-y:scroll;padding:10px; border: 1px solid #cccccc; background-color:#ffffff;">
    <table width="100%" height="100%" cellspacing="2" cellpadding="3" border="0" style="table-layout:fixed;">
    <col width="20"><col>
    <% =RenderAnnouncements(false) %>
    <tr height="100%" colspan="2"><td>&nbsp;</td></tr>
    </table>
    </div>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    
    </body>
    

    Добавьте после тега <body> строчку:

    <textarea style="display:none" id="anntext">
    

    а перед тегом </body>:

    </textarea>  
      
    <span id="annhtml"></span>  
    <script>   
    window.document.all.annhtml.innerHTML = document.all.anntext.value;  
    </script>
    

    Таким образом это код будет выглядеть так:

    <body>
    
    <textarea style="display:none" id="anntext">
    <table width="100%" height="100%">
    <tr>
    <td>
    <table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
    <tr>
    <td>
    <div style="width:100%;height:100%;overflow-y:scroll;padding:10px; border: 1px solid #cccccc; background-color:#ffffff;">
    <table width="100%" height="100%" cellspacing="2" cellpadding="3" border="0" style="table-layout:fixed;">
    <col width="20"><col>
    <% =RenderAnnouncements(false) %>
    <tr height="100%" colspan="2"><td>&nbsp;</td></tr>
    </table>
    </div>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    </textarea>  
      
    <span id="annhtml"></span>  
    <script>   
    window.document.all.annhtml.innerHTML = document.all.anntext.value;  
    </script>  
    
    </body>
    

    Чтобы сделать так, я использовал простую технику, которая обертывает внутреннее содержание тела (элемент стола) в textarea и читает ценность textarea в новый элемент промежутка как innerHTML.
    Этим самым мы добились того, что к объявлениям можно обратится как к значению элемента textarea, а затем вставляем это значение в тег span.

  • Сохраните и закройте файл. На этом все. Снова откройте Объявления.




П.С. html-код который Вы вставляете в тело объявления, должен быть в одну строчку. Это потому что разрывы строк интерпретируются как br-тэги элементы, т.е. переводы каретки в HTML документе.

Комментарии (0)

*

code