К основному контенту

Сообщения

Замена текста в NotesRichTextItem и сохранение стиля

Задача: заменить текст в RichTextItem. Например, есть какой-то шаблон с тегами, в котором динамически происходит подстановка значений. Поиск и замену всех тегов указанного значения можно выполнить вот в таком цикле: Dim rtRange As NotesRichTextRange Dim rtNav As NotesRichTextNavigator Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() While rtNav.Findfirststring(TAGKEY) //Замена значения Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() Wend , где rtItem - переданный NotesRichTextItem. Саму замену можно произвести вот так: Call rtRange.Setbegin(rtNav) Call rtRange.Setend(rtNav) Call rtRange.Remove() Call rtItem.Begininsert(rtNav) Call rtItem.Appendtext(VALUE) //Добавляем текстовое значение. Call rtItem.Endinsert() НО . В таком случае при выполнении rtRange.Remove() мы теряем стилевую информацию и вставка происходит со значениями по-умолчанию. Перенос rtRange.Remove() не помогает. Нужно вместе с этим сохранить стиль....

Записки начинающего лучника. Краткие итоги первого сезона

1. Лук и стрелы Пока что пользуюсь луком (рукоять), который купил еще в самом начале - SF Optimo+ . Сменил на ней 2 пары плечей, сейчас на постоянной основе использую 3и. 1 и 2 пары были родные от SF на 26# и 34#. Нынешние плечи на 40# от лука-близнеца -  Samik Polaris . Что могу сказать? - по мне  так отличный лук для начала. Неприхотлив, прост, достаточно качественен. Тем более я стреляю интуитивно и обвеса на нем нет. Сейчас уже хочется чего-то по-интереснее, поэтому нахожусь в поиске. Начинал стрелять самыми дешевым дубовым карбоном. На 26# хватало. Как перешел на более сильные плечи, сменил стрелы на алюминий: Easton Jazz 1916 . Стрелы я немного апгрейдил под свой стиль стрельбы. Немного писал об этом тут . На самом деле через некоторое время я пошел еще дальше в этом плане и сменил 3 пера на 4, взяв перья несколько по-меньше. Все хотел, но как-то не собрался описать свой опыт. Может чуть позже. При смене плечей на 40# подошли эти же стрелы. так что использ...

XPages. Диалог с пользователем. Собственные уведомления

Итогом полученных ограничений, которые получились в итоге  стало появление "собственной" системы сообщений. Итак, по-порядку: 1. FlashScope Сегодняшняя работа будет очень тесна связана в возможностью показать сообщение после редиректа страницы. Поэтому с механизма, который позволит это сделать и начнем. Метод, позволяющий отображать сообщения (речь идет о FacesMessage) после смены страницы описан тут . Но будем использовать, в некотором смысле, более универсальный механизм, который позволит передавать параметры между запросами и не занимать sessionScope или applicationScope - это  FlashScope . Я использую немного не эту реализацию, а реализацию от  Jesse Gallagher . Еще нужно в faces-config.xml прописать: <managed-bean>   <managed-bean-name>flashScope</managed-bean-name>   <managed-bean-class>java.util.HashMap</managed-bean-class>   <managed-bean-scope>session</managed-bean-scope> </mana...

XPages. Диалог с пользователем. Уведомления с помощью FacesMassage. Часть 2

В прошлой части я дал некоторую теоретическую подоснову о том, что такое FacesMessage в JSF и показал, как можно добавить и отобразить сообщение для пользователя, используя FacesContext.addMessage и компонент xp:messages. Сегодня продолжим: поработаем над отображением сообщений.

XPages. Применяем Bootstrap

Ранее я уже описывал некоторые аспекты, касательно добавления и применения Bootstrap в отношении xPages. Речь идет о Extension Library и Bootstrap  и Bootstrap для XPages в действии . Хотел бы еще раз вернутся к теме применения Bootstrap в проектах и уточнить кое-какие моменты. Как я писал, начиная с ExtLib 9.0.1 (build v00_10.20141105-0922) , уже непосредственно в состав ExtLib включена поддержка Bootstrap для xPages. Это значит, что никаких дополнительных плагинов (как я ошибочно указал тут , в настройках) ставить не нужно. Достаточно несколько простых шагов, чтобы сменить тему: 1. В настройках Xsp Properties , на вкладке General , Application Theme выбрать из доступных Bootstrap3.2.0 или Bootstrap3.2.0_flat . 2. Там же на закладке Page Generation выставить HTML doctype: HTML5 и галку Force content type to application/xhtml+xml 3. Единственная библиотека, которая должна (достаточно для работы bootstrap) быть подключена - com.ibm.xsp.extlib.library . Я проде...

XPages. Диалог с пользователем. Уведомления с помощью FacesMassage. Часть 1

Для улучшения восприятия пользователем приложения, с которым он общается было бы не плохо взаимодействовать с ним через отправку ему уведомлений (например, "Документ успешно сохранен". В цикле XPages. Диалог с пользователем буду рассматривать различные варианты отправки и отображения сообщений/уведомлений пользователю, двигаясь последовательно от простейших и не самых симпатичных до вполне радующих глаз. В определенный момент планирую перейти от OneUI темы (как в скриншотах, так и в демо-приложении) к Bootstrap, вероятно, описав нюансы подключения и перехода отдельным постом. В конце будет получен Java-класс (Bean), отвечающий за отправку сообщений и 1-2 Custom Control для их корректных отображений.

Синхронизация фоток пользователей в Учетные записи Active Directory

Занимательные взаимоотношения получились с задачей обновления фотографий пользователей в учетные записи Active Directory. Все оказалось несколько "необычнее", чем смотрелось на первый взгляд.

Web-сервисы - наше все.

Обнаружил и изучил несколько неплохих статьей из цикла Practical Web services in IBM Lotus Domino 7 (Практическое использование Web-сервисов в IBM Lotus Domino 7), последовательно раскрывающих суть Web-сервисов и их создание в среде Notes/Domino. 1.  What are Web services and why are they important?  Статья доступна на русском . 2.  Writing and testing simple Web services . Статья  доступна на русском . 3.  Writing complex Web services . Статья доступна на русском .

Widget Container. Базовые компоненты Extension Library

На повестке дня довольно простой, но очень симпатичный компонент: Widget Container 1.  Application Layout 2.  Navigator 3.  Data View 4.  Form Table (+Form Layout Column, Form Layout Row) 5.  Dialog (+ Dialog Content, Dialog Button Bar) 6. Tooltip Dialog --- Дополнительно --- 7. Widget Container 8. Bread Crumbs

Bootstrap для XPages в действии

Не стал откладывать возможность опробовать Bootstrap для XPages в долгий ящик и применил его для своего приложения " Личный баланс ". Итог меня очень вдохновил: приложение отлично изменяет размер и расположение своих элементов в зависимости от разрешения устройства. Один дизайн и код для всего! :) Кое-какие моменты в отображении формы (полей) мне не нравятся, но т.к. решение из коробки, то в целом более чем отлично! Вот так теперь выглядит приложение при коннекте с телефона: Основной вид Занесение данных Немного о настройках: 1. Используется тема bootstrapv3.2.0, поставляемая в составе последней сборки ExtLib (в доступных есть так же версия bootstrapv2.3.1, при установленном плагине Bootstrap4XPages) 2. Компонент Application Layout построен по конфигурации для Boostrap. Об этой  новой возможности упоминал в этом посте. 3. Для корректной работы всех элементов, на закладке Page Generation (в настройках приложения XspProperties), в разделе HTML Generatio...

Extension Library и Bootstrap

На просторах OpenNTF.org развивается проект Bootstrap4XPages. Bootstrap - фреймворк для Web-приложений. Суть проекта - дать человеческую возможность разработчикам на xPages пользоваться благами Bootstrap. В последнем релизе ExtLib 9.0.1 (build v00_10.20141105-0922) была включена поддержка Bootstarp (версия темы 3.2.0) и jQuery (версия темы 2.1.1) в виде нового плагина: XPages Responsive Bootstrap (XRB). Плагин, в том числе, дает возможность использовать компонент Application Layout с новой конфигурацией: Bootstrap Responsive Application Configuration. Данная конфигурация обладает дополнительными возможностями, описанными в Readme к ExtLib. Вот так вот меняется диалог настройки компонента при его перетаскивании с палитры: Одно из исходных преимуществ Bootstrap - автоматическое изменение своего отображения в зависимости от разрешения дисплея, т.е. ничего не меняется при использовании как мобильных устройствах, так и на больших устройствах. Использование Bootstarp для XPag...

Не делайте папку xsp в каталоге Data на сервере Domino

И з названия поста основная мысль, на мой взгляд, более чем понятно. Не надо делать папку xsp в каталоге Data на сервере. Приложения, лежащие там (и во вложенных каталогах) будут не доступны через Web. Почему? - Не знаю. Они отлично открываются через клиент, но по http не видны, как будто базы нет там. Вероятно, это как-то связано там, что в основном каталоге сервера есть папка xsp, но утверждать не буду.

Какой инструментарий должен быть в арсенале у XPages-разработчика

D avid Leedy в своем блоге NotesIn9 начал цикл постов о разработке Web-приложений под IBM Domino на XPages, что называется, с основ. Особенностью его блога является то, что это в основном-видео блог. 2-ой пост из этого цикла рассказывает о том, какие плагины он будет использовать в дальнейшем. Пост полезен тем, что все самое необходимое собрано в одном месте и Девид показывает, как происходит установка плагинов на сервер и клиент. С пособ установки плагинов перекликается с тем, что описывал я в посте по установке Extension Library с одной интересной особенностью, что каждый новый плагин он добавляет не в одну и ту же базу UpdateSite, а под каждый организует свою базу. В общем к просмотру этот пост и последующие рекомендую!

IBM Notes. Личный баланс

Х очу поделиться приложением, которое я делал и делаю по-сути для себя. Одна из первых идей для личного удобства, которую я начал делать, когда еще только познакомился с IBM Lotus Notes/Domino. Это приложение пережило несколько итераций и было одно из первых, на которых я опробовал попытки создания движков для приложений. Это приложение не самое сложное, которое я когда-либо делал. Это приложение не обладает невообразимыми функциональными возможностями. Но. Это приложение, которым я горжусь. Это приложение, позволяющее вести личный баланс...

Записки начинающего лучника. С чего начинать начинающему?...

М не всегда нравились луки. Я вообще больше люблю..."живое" оружие: холодное или метательное. Даже арбалеты уже не так меня привлекают. Загорелся идей освоить стрельбу из лука после того, как попробовал это единожды в лучном тире, с учетом, что лука под мою руку и них не было.

Tooltip Dialog. Базовые компоненты Extension Library

Сегодня рассмотрим последний компонент, из обозначенных мной как основных - это Tooltil Dialog 1.  Application Layout 2.  Navigator 3.  Data View 4.  Form Table (+Form Layout Column, Form Layout Row) 5. Dialog (+ Dialog Content, Dialog Button Bar) 6. Tooltip Dialog --- Дополнительно --- 7. Widget Container 8. Bread Crumbs

Записки начинающего лучника. Увеличение скорострельности: Апгрейд лука и стрел

П риобретал заплечный колчан  для увеличения общей скорострельности. Опробовав его в деле понял, что возник еще рад моментов: 1. Как неглядя вытаскивать стрелу за хвостовик нужной стороной? Понятно, что для этого надо либо знать, как он там лежат, либо касаясь хвостовика нужно сразу понимать ориентацию стрелы. 2. Как быстро накладывать стрелу на тетиву в нужном месте?

Записки начинающего лучника. Выбор заплечного колчана

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

Заметки начинающего лучника. Рекорд

К ак-то я в обратном порядке все начинаю писать: от конца к началу, ну да ладно, наверстаю. П озавчера выбил свой рекорд по очкам: 51 очко с 18 метров в маленькую мишень. Фотку не сделал, но осталась запись в листе результатов. P.S. Стреляю я без прицела и спец. приспособлений (интуитивно) с традиционной полочкой. P.P.S. Кому интересно: использую программку Archery Companion.

IBM Notes. Интересное поле $RespondedTo

Наткнулись намедни на интересное поле. Имя ему $RespondedTo. Встретить его можно в почте. Сигнализирует о том, какие действия были совершены с письмом. Имеет 3 фиксированных значения: 1 - На сообщение был отправлен ответ 2 - Сообщение было переслано 3. На сообщение был отправлен ответ и оно было переслано Поле может быть создано в любом документе и любой базе, при этом все его особенности, описанные ниже, сохраняются. Итак, особенности: 1. Если было создано, то удалить его уже невозможно 2. Значения строго фиксированы и при попытке создать поле с другими, отличными от описанных значениями ничего не произойдет. Поле создано не будет. 3. Значения не только фиксированы, но и подчинены собственным правилам изменения: со значения 1 можно только на 3 (при изменении на 2 значение станет равным 3); со значения 2 только на 3, а при значении 3 изменение на какое либо другое не возможно. После всевозможных тестов пришли к выводу, что работа с этим полем прописана (hardco...