• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Notesuiworkspace Frameset и Currentview

  • Автор темы Event01
  • Дата начала
E

Event01

Здравствуйте, такой вопрос. Можно ли переопределить стандартный дефолтный фреймсет, чтобы свойство CurrentView объекта NotesUIWorkspace возвращало текущее представление в моем фреймсете (не используя OpenView объекта NotesUIDatabase)
И еще один вопрос: почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)? :) :angry:
 
H

hosm

<...>
И еще один вопрос: почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)?
Иногда и работает - смотря как БД открывается.
Скорее всего, связано с особенностью определения notesUIWorkspace.CurrentDatabase. Не отработает, например, когда пользователь открывает БД из рабочей области через переход к представлению по View - GoTo.
 
A

Akupaka

почему не работает database script из database resources (на событие открытия БД и закрытия не производит соотвествующих действий)?
работает
либо у тебя там какие-то глюки, либо после того как написал код, закрой базу и в нотесе и в дизайнере (а лучше лотус перегрузи), потом проверь...
если не будет работать, нужно попробовать очистить кеш. либо убить базу cache.ndk, либо найти в ней нужные доки и убить...

через переход к представлению по View - GoTo
так не будет, да :)
 
O

Omh

Ещё DatabaseScript не отрабатывает, если, например, пустануть агента из базы (из меню Actions), который открывает документ из этой же базы.
 
T

TIA

Ещё DatabaseScript не отрабатывает, если, например, пустануть агента из базы (из меню Actions), который открывает документ из этой же базы.

А также DatabaseScript не отрабатывает при открытии документа по доклинку.
 
A

Akupaka

)) интересно, а он отрабатывает когда-нить, кроме случаев открытия БД на УИ через File/Database/Open (или аналогичного способа)?
 
O

Omh

Akupaka
Вопрос не в бровь, а по йайцам!
 
H

hosm

Работает, например, еще при открытии БД или представления по notesurl
(вида Notes:///ReplicaID или Notes:///ReplicaID/View).
А вот для notesurl документа не работает :)
И где здесь логика? :angry:
 
E

Event01

у меня получается, что при внесении любых изменений в дизайнере, он перестает отрабатывать без перезапуска самого дизайнера. в остальном вроде нормально теперь работает. Спасибо за ответы. Теперь меня интересует только первый вопрос.
 
T

TIA

у меня получается, что при внесении любых изменений в дизайнере, он перестает отрабатывать без перезапуска самого дизайнера. в остальном вроде нормально теперь работает. Спасибо за ответы. Теперь меня интересует только первый вопрос.

В принципе, св-во NotesUiWorkspace.CurrentView возвращает текущий вид в независимости от того, отображён ли он через дефолтный фрейм-сет, или системный, или кастомный. Текущий вид - это вид в активном фрэйме. Опишите, в каком контексте у вас не срабатывает NotesUiWorkspace.CurrentView? От куда запускается скрипт: из акции ли какого-то фрема с вьюшкой, в событии ли формы при открытии документа, от куда?
 
E

Event01

В принципе, св-во NotesUiWorkspace.CurrentView возвращает текущий вид в независимости от того, отображён ли он через дефолтный фрейм-сет, или системный, или кастомный. Текущий вид - это вид в активном фрэйме. Опишите, в каком контексте у вас не срабатывает NotesUiWorkspace.CurrentView? От куда запускается скрипт: из акции ли какого-то фрема с вьюшкой, в событии ли формы при открытии документа, от куда?
скрипт не запускается из формы на событие нажатия на кнопку в соседнем фрейме.
 
T

TIA

Скрипт запускается. При этом, у Вас возникает ошибка, не так ли? Если нет - значит это совсем другая проблема. Если да - то в момент нажатия на кнопку, сначала активизируется фрейм с формой, содержащей кнопку. Поэтому св-во NotesUiWorkspace.CurrentView is Nothing. Стандартный фреймсет ведёт себя аналогично. Решить задачу можно, запомнив текущий UI-вид в событии QueryOpen, PostOpen или Initialize формы, открывающейся из представления, т.е. пока представление ещё активно. А в кнопке уже использовать полученный объект.
Только в кнопке всё равно проверяте объект на Nothing. Иначе, если представление во фрейме сменится, а документ останется, то запомненный объект сбросится в Nothing.
 
E

Event01

Скрипт запускается. При этом, у Вас возникает ошибка, не так ли? Если нет - значит это совсем другая проблема. Если да - то в момент нажатия на кнопку, сначала активизируется фрейм с формой, содержащей кнопку. Поэтому св-во NotesUiWorkspace.CurrentView is Nothing. Стандартный фреймсет ведёт себя аналогично. Решить задачу можно, запомнив текущий UI-вид в событии QueryOpen, PostOpen или Initialize формы, открывающейся из представления, т.е. пока представление ещё активно. А в кнопке уже использовать полученный объект.
Только в кнопке всё равно проверяте объект на Nothing. Иначе, если представление во фрейме сменится, а документ останется, то запомненный объект сбросится в Nothing.
тут немного сложнее задача у меня. Форма в фрейме открывается с открытием бд и закрывается с закрытием бд. Она открывается не из представления.
Еще один вопрос возник: есть ли возможность объявлять в LN глобальные переменные, видимые во всем приложении?
 
T

turumbay

тут немного сложнее задача у меня. Форма в фрейме открывается с открытием бд и закрывается с закрытием бд. Она открывается не из представления.
Еще один вопрос возник: есть ли возможность объявлять в LN глобальные переменные, видимые во всем приложении?
про глобальные переменные:
глобальные переменные на уровне приложения, к счастью, объявить нельзя. однако никто не мешает сохранить состояние объекта в профайле, environment-е или где-нить еще. если хочеца сохранить объект UI - меняйте логику...
про фреймсет иже с ним: не ясна задача... uiview можно запомнить в Initialize формы, как писал TIA. Межфреймовое взатмодействие проще всего организовать через JavaScript. Если треба выполнить действие в контексте одного документа во фрйеме, а потом другого, то играйте в эту сторону:
JS кнопка с кодом типа:
windows.frames[0].document.button1.click
windows.frames[1].document.button2.click
(треба поиграть в свойства windows.top чтоб достучаться до нужного фрейма)
на кажой форме скрытая кнопка, на вкладке <HTML> каждой кнопки: name = id = "button" & i. На кнопке - LSScript, пользующий контекст текущего документа. Ссылку на uiview можно взять из документа, который открывался их этого uiview....
З.Ы. Если вы вдруг опишите сообществу задачу в общих чертах - наверняка решение будет найдено...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!