28 февраля 2011 г.

Глобальный контекст переменных в SSJS библиотеках

Неисповедимы пути логики IBM.
Обнаружил такой факт: переменные объявленные в SSJS библиотеке имеют глобальную область видимости для всего приложения, т.е. что-то типа applicationScope.

15 февраля 2011 г.

конвертирование документов

В базе хранятся MSWord'овские документы. Встала задача преобразовывать их в PDF. Решили, что лучше всего подойдет для этих целей OpenOffice - кросплатформенный, из коробки умеет в PDF сохранять. Для доступа к ООо использовали JODConverter (чтоб не заморачиватся).

26 декабря 2010 г.

dojo Accordion

В одной из задач необходимо было применить "аккордион" для отображения информации, при этом заголовок должен был оформлен определенными стилями, не похожими на стандартные... :)
Решается следующим образом:
Если посмотреть стуктуру каталогов dojo то в dijit\themes\tundra\layout есть файлик AccordionContainer.css где и описыны стили "аккордиона". Не надо лезить туда и что-то там править, просто копируем от туда текст\стили и вставляем в ресурс css у себя в базе и переопределяем там как надо... :)
tundra - схема по умолчанию, если у Вас она переопределена соответствено переопределяем стили соответстующие схеме.

И еще в заголовок "аккордиона" (параметр title у div'a на основе которого стоится "аккордион") можно пихать не простой текст, а html... :)

22 декабря 2010 г.

Убираем из dojo Dialog иконку закрытия диалога

Иногда при формировании и работе dojo-диалога в xPages надо логику повесить на кнопки и запретить закрытие диалога "крестиком".

Делается это следущим образом (в клиентском JS!):
dojo.style(dijit.byId('MyDialog').closeButtonNode,"display","none")

А что бы и по Esc не вышли:
dijit.byId('MyDialog')._onKey = function(){};

2 июня 2010 г.

Получить все локальные IP

Встала задача получить на клиенте все локальные IP.
WinAPI, WHS - примеры были, но как-то не "кошерно"...
Java!... Порывшись в инете по примерам, в итоге сделал (собрал) функцию, которая получает все локальные IP. Функция на LS через LS2J....
Вот пример как это сделать:

Uselsx "*javacon"

Sub Initialize
    Dim jSession As JavaSession
    Dim jClass As JavaClass
    Dim jObject As JavaObject
    Dim jObjHost As JavaObject
    Dim jError As JavaError
    Dim ArrObj As Variant

    Dim host As String
   
    On Error Goto errorHandler
   
    Set jSession = New JavaSession()
    Set jClass = jSession.GetClass("java/net/InetAddress")
    Set jObject = jClass.CreateObject
   
    host = jObject.getLocalHost().getHostName()



    'закомментировано только для одного IP
    'Если только первый и единственный, но не всегда на машине он один...
    'Set jObjHost = jObject.getByName(host)
    'IPAddress$ = jObjHost.getHostAddress()
    'Msgbox IPAddress$
   
    ArrObj = jObject.getAllByName(host)
    For i%=0 To Ubound(ArrObj)
        Set jObjHost = ArrObj(i%)
        Msgbox host+" - " + jObjHost.getHostAddress()
    Next
    Exit Sub
errorHandler:
    Set jError = jSession.getLastJavaError()
    Messagebox jError.StackTrace,, Error
    Exit Sub
End Sub


Заметьте, что ни каких java-библиотек в лотусах создавать не надо, всё что надо здесь, в одном месте... :)