ОБСУЖДЕНИЕ

Поля типа Richtext

14 ответов 8,5 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
В зависимости от роли пользователя необходимо запретить или разрешить редактирование содержимого поля. На событии querymodechange я запрещаю редактирование, но почему-то удалять содержимое поля всё равно можно.
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim s As New Notessession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument

Set db = s.CurrentDatabase
Set doc = ws.CurrentDocument.Document

If doc.Edit(0) = "0" Then
continue = True
Else
continue = False
End If
End Sub
 
А если задать себе вопрос - отрабатывает ли вообще в вашем контексте событие Querymodechange? например из view нажимаем Ctrl + E либо action с @Command([EditDocument]) и благополучно минуем сие событие и открываем документ в режиме редактирования. Тут нужно проверять еще и как отрабатывает QueryOpen.

Ну и для полноты ощущений - doc.Edit(0) = "0" - это что такое и зачем ?
Свойство EditMode класса NotesUIDocument вам в помощь, читаем подробнее в хелпе и будет вам счастье.

Но это решает проблему запрета\разрешения открытия всего документа в режиме редактирования. А если нужно конкретное поле, причем RichText, да еще в зависимости от роли, то по идее в секцию с контролируемым доступом его
 
А если задать себе вопрос - отрабатывает ли вообще в вашем контексте событие Querymodechange? например из view нажимаем Ctrl + E либо action с @Command([EditDocument]) и благополучно минуем сие событие и открываем документ в режиме редактирования. Тут нужно проверять еще и как отрабатывает QueryOpen.

Ну и для полноты ощущений - doc.Edit(0) = "0" - это что такое и зачем ?
Свойство EditMode класса NotesUIDocument вам в помощь, читаем подробнее в хелпе и будет вам счастье.

Но это решает проблему запрета\разрешения открытия всего документа в режиме редактирования. А если нужно конкретное поле, причем RichText, да еще в зависимости от роли, то по идее в секцию с контролируемым доступом его

/////////////////////////////////////////////

да я учёл этот момент , на postopen я проверяю режим открытия:

If doc.edit(0) = "1" Then
uidoc.EditMode = False
End If

на querymodechange:

Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim s As New Notessession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument

Set db = s.CurrentDatabase
Set doc = ws.CurrentDocument.Document

If doc.Edit(0) = "0" Then
continue = True
Else
If doc.Edit(0) = "0" And Source.EditMode = True Then
continue = True
Else
If doc.Edit(0) = "1" And Source.EditMode = False Then
continue = False

End If
End If
End If
If Source.EditMode = True Then
Call Source.Save
End If
End Sub


а поле Edit документа на queryopen записывается 0 если чувак имеет роль для редактирования и 1 если не имеет этой роли (это поле нужно и для других целей)

А проблема в следующем, нужно чтоб содержимое поля открылось для чтения всем пользователям (даже если они не имеют роли) но нельзя чтоб они смогли его редактировать.
В данном случае почему не знаю редактирование запрещено но удаление проходит на ура.

Спасибо что отозвались. Ещё я видел варианты (не знаю как это реализовано) когда кнопки Edit Delet при открытии файла в полях типа richtext вообще не доступно.
 
А проблема в следующем, нужно чтоб содержимое поля открылось для чтения всем пользователям (даже если они не имеют роли) но нельзя чтоб они смогли его редактировать.
В данном случае почему не знаю редактирование запрещено но удаление проходит на ура.

Ну тогда варианты решений:
секция с контролируемым доступом - уже озвучен
использовать в документе computedSubform . Делаем 2 Subform на которых размещено richText поле - на одной Subform оно Editable на другой - computed. Открытие конкретной необходимой subform в зависимости от наличия роли или поля Edit в твоем случае.

В данном случае почему не знаю редактирование запрещено но удаление проходит на ура.

А удаление как реализовано ? Если у меня в принципе есть права на редактирование документа - то невозможность редактирования поля решается только через помещение его в секцию с контролируемым доступом. Все остальное - интерфейсные рюшечки, которые достаточно просто обходятся. Например агентик или action со скриптом или @-формулами и с полями в документе делай все что хочешь - несмотря на внешнюю невозможность редактирования и удаления.
 
тогда такой вопрос: как переписывать содержимое поля что editable в поле что computed?
Если ставить по умолчанию название поля что editable в computed то файл не передаётся.
 
appendrtitem в хелпе дизайнера
 
а такой вопрос: можно как нибудь проверить лежит в поле типа RichText файл или может текст вбит?
 
тогда такой вопрос: как переписывать содержимое поля что editable в поле что computed?
Если ставить по умолчанию название поля что editable в computed то файл не передаётся.

Все просто. Вариант с subform.
Есть richText поле называемое например rtField.
Делаем 2 subform.
На первой делаем поле типа richText с названием rtField - тип Editable
На второй делаем поле типа richText с названием rtField - тип Computed. Formula для поля = rtField.

На основной форме поле rtField более без надобности его и убираем. Добавляем computedSubform с формулой которая открывает нужные нам subform в зависимости от наличия\отсутствия роли.
Все. Больше никаких телодвижений совершать необходимости нету
 
Доброго всем дня!
Никто не знает как проверить находится ли в поле типа RichText какой-нибудь файл, ссылка, то есть не пустое ли оно?
Проверка на размер содержимого не подходит т.к. это поле по умолчанию имеет сколько-нибуть байт.
Спасибо.
 
<!--QuoteBegin-velitchestvo+16:07:2006, 05:55 -->
<span class="vbquote">(velitchestvo @ 16:07:2006, 05:55 )</span><!--QuoteEBegin-->Никто не знает как проверить находится ли в поле типа RichText какой-нибудь файл
[snapback]40210" rel="nofollow" target="_blank[/snapback]​
[/quote]
@Atachment
 
На первой делаем поле типа richText с названием rtField - тип Editable
На второй делаем поле типа richText с названием rtField - тип Computed. Formula для поля = rtField.

На основной форме поле rtField более без надобности его и убираем. Добавляем computedSubform с формулой которая открывает нужные нам subform в зависимости от наличия\отсутствия роли.

Имейте ввиду, что 7 версия LD (7.0.3 точно) проверяет наличие одинаковых полей на computed subform'ах. То есть в описанном способе будет ругань при компиляции на одинаковые имена поля.
 
Имейте ввиду, что 7 версия LD (7.0.3 точно) проверяет наличие одинаковых полей на computed subform'ах. То есть в описанном способе будет ругань при компиляции на одинаковые имена поля.
дык а зачем две сабформы пихать в док??? подменяйте их в зависимости от наличия ролей и все. а на самом деле лучше юзать controlled access section, не надо будет делать изменения в дизайне синхронно в двух сабформах, ну а если не хочеца так, то лучше вместо двух сабформ сделать два поля - одно компутед а другое едитабле и скрывать их в зависимости от ролей
 
дык а зачем две сабформы пихать в док??? подменяйте их в зависимости от наличия ролей и все. а на самом деле лучше юзать controlled access section, не надо будет делать изменения в дизайне синхронно в двух сабформах, ну а если не хочеца так, то лучше вместо двух сабформ сделать два поля - одно компутед а другое едитабле и скрывать их в зависимости от ролей


computed subform

Код:
@if(условие;"subforma1"; "subforma2")

при этом форма с такой computed subform не компилится если и на subform1 и на subform2 есть поле с именем field1.
Создание двух RT в доке не рентабельно. А если там файл? и не маленький? Я вижу выход только в управляемой секции
 
Не майтесь ерундой - управляемая секция - самый лучший выход...
Скрытие РТ полей ваще работать корректно не будет, так как формула скрытия для РТ полей применяется только один раз...
 
Статус
Закрыто для дальнейших ответов.

Статистика тем

Создано
velitchestvo,
Последний ответ от
Sandr,
Ответы
14
Просмотры
8 522