Форум продуктов IBM Lotus

Общие вопросы => Разработка приложений => Тема начата: Francyz от 07 Июнь 2009, 15:50:33

Название: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 07 Июнь 2009, 15:50:33
Есть такая фишка, что можно почтовый шаблон mail8 переименовать, после чего указать указать его в файле пользователя и он будет использоваться в качестве шаблона, тогда никакие "ночные" обновления затирать его не будут и т.д.

Так вот вопрос: "Можно ли подобное сделать с файлом forms8 ?" Дело в том что этот файл не копируется пользователя  - это общий файл, один для всех который отображает Веб-аксес. И для того, чтобы у одного пользователя данные брались не из общего файла forms8 а к примеру из forms8_1 - это нужно править его почтовый шаблон, в нем указывается название файлов которые подгружаются, но я не могу найти блин.. весь код облазил и не соображу где в шаблоне идет вызов файла forms8.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 08 Июнь 2009, 17:31:02
В почтовом шаблоне есть ссылка на "iNotes/Forms8.nsf". Можно увидеть в дизайнере, в свойствах элемента Other->Database Resources -> Icon, в поле "$FormsTemplateFile".
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 08 Июнь 2009, 19:04:25
То, что там есть ссылка я и так знаю. Файл то один на всех, поэтому ссылка должна быть по-любому. Вопрос в том, где она меняется.
Может кто уже менял ее, чтобы подгружалась не из этого файла а другого к примеру.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 08 Июнь 2009, 20:13:52
Как меняется описано в редбуке (http://www.redbooks.ibm.com/abstracts/redp4188.html?Open) в разделе "How to use different forms databases".
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 08 Июнь 2009, 22:43:51
спасибо.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 09 Июнь 2009, 21:18:29
Блин, это опять же для всех пользователей, просто показано, как заменить базу для всех, чтобы она типа не затиралась. А мне такую шняжку надо только для одного пользователя. Там настройки глобальные в нотес.ини и в самом файле forms8.nsf настраивается переход на другой файл. А мне нужно как сделать тоже самое только в почтовом шаблоне одного пользователя, чтобы у всех грузился дефолтовый шаблон forms8 а у одного пользователя другой....
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 09 Июнь 2009, 23:57:21
В notes.ini указываются все, так сказать, разрешенные имена для forms.
A в шаблонах для каждого пользователя можно указывать разные.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 10 Июнь 2009, 00:47:25
Файл для всех пользователей один - это forms8.nsf, он не дублируется на компьютеры пользователей, как mail8.ntf (таким образом что типа mail8.ntf лежит на сервере, а на его основе сделаны шаблоны пользователей и у каждого свой mail8.nsf) он лежит только на сервере. И все пользователи обращаются к нему одному - он один на всех (общий). В книжке как раз и указывается, если вы хотите сделать так, чтобы этот шаблон не затирался, то вы делаете копию, например forms8_new.nsf И уже в оригинальном файле (не в шаблоне пользователя mail8, а именно в forms8.nsf) делаете ссылку на новый созданный вами файл, при помощи пары переменных, я уже не помню как там в книге. Но суть в том что это для всех пользователей. И в нотес.ини тоже указывается общий для всех.....
А я хочу сделать чтобы файл forms8_new.nsf подгружался только для одного, а все остальные сидели через оригинальный forms8.nsf.
Я полагаю что это возможно как раз таки и прописывается в шаблоне пользователя mail8.nsf но я не могу найти где это.....
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 10 Июнь 2009, 01:28:47
А я так понял, что файл forms для каждой пользовательской БД тот, который прописан в $FormsTemplateFile (и при этом он должен быть разрешен в notes.ini).
Не думаю, что там накрутили двойную ссылку (сначала на forms, потом на forms_new) :-[

Вот еще ссылка на эту тему: http://www-10.lotus.com/ldd/dominowiki.nsf/dx/lotus-inotes-how-to-enable-a-custom-forms-database (http://www-10.lotus.com/ldd/dominowiki.nsf/dx/lotus-inotes-how-to-enable-a-custom-forms-database)


В принципе, можно и в одном forms прописать разные варианты для разных пользователей (например, с помощью условий скрытия). Так наверное проще потом администрировать - все будет в одном месте.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 10 Июнь 2009, 09:07:07
Вот эта штука $FormsTemplateFile пропысывается в forms8 если верить книжке... а этот файл один... С помощью условий это не получиться, поскольку я просто отключаю Веб-элементы при помощи disabled у них в свойстве.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 10 Июнь 2009, 09:28:10
Попробуйте все-таки сделать как в последней ссылке описано, возможно получится.

Disabled ставите в html свойстве элемента?
Если это поле на форме, то условия можно прописать в HTML Attributes.
Если элемент прописан тегами на форме, то можно его размножить на несколько строк и у каждой строки задать свои условия скрытия.
Приведите пример, возможно что-нибудь посоветую.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 10 Июнь 2009, 09:48:41
Да, это просто ХТМЛ код... файл forms8.nsf  форма s_MailPreferenceEditCode

...........
<td><input type=radio name="rdoSignatureType" id="r0SignatureType" value="0" onclick="Eta(0)"></td><td><label for="r0SignatureType" class="s-form-label">Обычный текст</label>&nbsp;&nbsp;</td><td><input type=radio [b]disabled[/b] name="rdoSignatureType" id="r1SignatureType" value="1" onclick="Eta(1)"></td><td><label for="r1SignatureType" class="s-form-label">Форматируемый текст</label></td></tr></table></td></tr></table></td></tr><tr id="SignatureText">
.................
Вот? просто у пары кнопок и двух полей? ставлю отключение и все. А у админа надо будет, чтобы все было нормально, т.е. чистый шаблон.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 10 Июнь 2009, 10:13:25
Делаете две такие строки, так чтобы каждая была на новой строке (отделите от остального кода).

В одной строке указываете у нужного html-элемента disabled. В Text Properties этой строки, в Hide paragraph if formula is true формулой скрываете строку если пользователь не администратор.
В Text Properties другой строки, в Hide paragraph if formula is true формулой скрываете строку если пользователь администратор(предыдущая формула с отрицанием).
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 18 Июнь 2009, 22:24:20
Странно, но не работает.... даже с одной строкой.... просто для проверки для одной строки ввожу @IsNotMember("test"; @UserName), но под каким пользователем не войду, все равно поле открыто.
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 19 Июнь 2009, 11:14:58
@UserName возвращает каноническое имя пользователя - полное иерархическое имя пользователя (CN=test/OU=suborg/O=org).
Здесь наверное лучше использовать @UserNamesList.

После изменения forms делаете "dbcache flush" и перезапуск задачи HTTP?
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 19 Июнь 2009, 12:11:47
Да без раницы как, делаю и @IsNotMember с @UserName и с @UserRoles, И @Contains функцию делаю, чето-то результата нету...
Когда сохраню изменение делаю рестарт http через te http restart и изменения применяются - это видно, но формула скрытия почему то не пашет...
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 19 Июнь 2009, 12:30:43
Разница есть. В списки @Userroles и @Username короткое имя не входит.
Если вы для админов фильтруете, попробуйте @IsNotMember("LocalDomainAdmins";@UserNamesList).
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 19 Июнь 2009, 14:51:08
Так-с, у меня складывается мнение, что функция работает как надо, просто я ожидаю не того результата от нее.... Начну с начала, может сразу будет ясно что я делаю не то и функция тут не причем....

В общем в файле forms8.nsf есть форма, которая отвечает за параметры в веб-аксесе, название формы s_MailPreferenceEditCode. Так вот там есть код, который идет сплошняком, без разделений... Я нашел функцию которая отвечает за пункт подпись, она выглядит так:
[b]s='[/b]<table width="100%" border=0 cellspacing=0><tr><td colspan="2" align=left class="s-form-header">Подпись:</td>
</tr><tr><td><input type=checkbox disabled id="chkEnableSignature" value="1"></td>
<td width="100%" align=left><label for="chkEnableSignature" class="s-form-label">Автоподпись в нижней части исходящих почтовых
 сообщений</label></td></tr><tr><td colspan="2"><table cellspacing=0><tr>
<td class="s-form-label" style="padding-left:25px;padding-top:10px">Тип</td></tr>
<tr><td style="padding-left:25px"><table cellspacing=0><tr><td><input type=radio name="rdoSignatureType" id="r0SignatureType"
value="0" onclick="Eta(0)"></td><td><label for="r0SignatureType" class="s-form-label">Обычный текст</label>&nbsp;&nbsp;</td>
<td><input type=radio name="rdoSignatureType" id="r1SignatureType" value="1" onclick="Eta(1)"></td>
<td><label for="r1SignatureType" class="s-form-label">Форматируемый текст</label></td></tr></table></td></tr></table>
</td></tr><tr id="SignatureText"><td colspan="2" style="padding-left:25px;padding-top:5px" align=left>
<textarea id="dispSignature_1" rows=5 COLS=60 class="s-form-input" style="overflow:auto;"></textarea></td></tr></table>[b]';[/b]

Это я тут разбил по строчкам, чтобы можно было видеть код целиком.... поскольку это функция S=' тут сам код ' ее нельзя переносить на новую строчку, чтобы залезть к ней в свойства. Поэтому она идет одной строкой, и если менять свойства, то только у всей этой строки, а не конкретно у строки с тегом <input type=radio>. Поэтому я одтелил эту функцию ото всех.. и ей в свойствах указал, скрывать это, если пользователь не в группе админ, функцией @IsNotMember("LocalDomainAdmins";@UserNamesList)...

Поскольку внутри этого абзаца есть таблица и строки которые мне нужны, то по идее они тоже должны скрываться, поскольку я применил свойство ко всему абзацу, в котором они находятся... Но ничего не происходит.... любой пользователь заходит в свойства и там таблица которая показана внутри скрываемого абзаца все равно видно со всеми строками, хотя это не должно быть.. я прав????
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 19 Июнь 2009, 15:52:21
Т.е. просто по идее, когда смогу это сделать, то можно будет дублировать этот абзац и уже измененный сдалть видимый админу, а чистый оставить пользователям... но пока не пашет даже с одним абзацем...
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 19 Июнь 2009, 15:54:15
сейчас попробую. Вы скрываете переключатель типа подписи?
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 19 Июнь 2009, 17:02:14
я делаю неактивными радио кнопки, чекбокс и текстАреа, при помощи disabled. Т.е. если скопировать этот абзац с функцией S='' то в первом случае они будут активны и там будет формула скрытия если пользователь не админ, то скрывать его, а Второй абзац для обычных пользователей, там в эти теги будет добавлена функция disabled и проверка соответственно скрывать его, если админ ....
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: ViV от 19 Июнь 2009, 18:47:19
Походу в этой форме игнорируются условия скрытия и формульные выражения...

Можно сделать по другому: использовать проверку на javascript. Если порыться в кодах, то обнаружится переменная "haiku.AbbrevUserName", в которой хранится имя польователя в аббревиативном формате (например: Administrator/OrgUnit/Org).
После определения переменной "s", можно поставить условие на присваивание значения этой переменной:

DHR.prototype.TC=function(){var s; if (haiku.AbbrevUserName!='Administrator/OrgUnit/Org') {s='<table width="100%" border=0 cellspacing=0><tr><td colspan="2" align=left class="s-form-header">Signature:</td></tr><tr><td><input type=checkbox disabled="true" id="chkEnableSignature" value="1"></td><td width="100%" align=left><label for="chkEnableSignature" class="s-form-label">Automatically append a signature to the bottom of your outgoing mail messages</label></td></tr><tr><td colspan="2"><table cellspacing=0><tr><td class="s-form-label" style="padding-left:25px;padding-top:10px">Type</td></tr><tr><td style="padding-left:25px"><table cellspacing=0><tr><td><input type=radio name="rdoSignatureType" disabled="true" id="r0SignatureType" value="0" onclick="Eta(0)"></td><td><label for="r0SignatureType" class="s-form-label">Plain text</label>&nbsp;&nbsp;</td><td><input type=radio name="rdoSignatureType" disabled="true" id="r1SignatureType" value="1" onclick="Eta(1)"></td><td><label for="r1SignatureType" class="s-form-label">Rich text</label></td></tr></table></td></tr></table></td></tr><tr id="SignatureText"><td colspan="2" style="padding-left:25px;padding-top:5px" align=left><textarea disabled="true" id="dispSignature_1" rows=5 COLS=60 class="s-form-input" style="overflow:auto;"></textarea></td></tr></table>';}else{s='<table width="100%" border=0 cellspacing=0><tr><td colspan="2" align=left class="s-form-header">Signature:</td></tr><tr><td><input type=checkbox id="chkEnableSignature" value="1"></td><td width="100%" align=left><label for="chkEnableSignature" class="s-form-label">Automatically append a signature to the bottom of your outgoing mail messages</label></td></tr><tr><td colspan="2"><table cellspacing=0><tr><td class="s-form-label" style="padding-left:25px;padding-top:10px">Type</td></tr><tr><td style="padding-left:25px"><table cellspacing=0><tr><td><input type=radio name="rdoSignatureType" id="r0SignatureType" value="0" onclick="Eta(0)"></td><td><label for="r0SignatureType" class="s-form-label">Plain text</label>&nbsp;&nbsp;</td><td><input type=radio name="rdoSignatureType" id="r1SignatureType" value="1" onclick="Eta(1)"></td><td><label for="r1SignatureType" class="s-form-label">Rich text</label></td></tr></table></td></tr></table></td></tr><tr id="SignatureText"><td colspan="2" style="padding-left:25px;padding-top:5px" align=left><textarea id="dispSignature_1" rows=5 COLS=60 class="s-form-input" style="overflow:auto;"></textarea></td></tr></table>';}

Вроде работает. Единственное, здесь проверяется по конкретному имени. Возможно есть переменная, где хранится группа пользователя, нужно копаться...
Название: Re: Отдельнй forms8 для одного пользователя
Отправлено: Francyz от 19 Июнь 2009, 19:03:42
Ясно, спасибо. Пока надо как раз для одного человека, надо сделать, а потом будем думать....