ссылки во View

  • Автор темы kilcher
  • Дата начала
K

kilcher

#1
Доброго дня!

Есть вью под веб. Требовалось оформить его вывод в браузере в виде таблицы.
Сделали.
А как теперь сделать значения в одной из колонок ссылками на документ???
Написала в колонке Html код
"<tr><td><p><a href=''http://server.ru/base.nsf/view/"+@Text(@DocumentUniqueID)+"?OpenDocument''>"+NumberDoc+"</a></p></td>"

При просмотре в дизайнере все показывает как надо. Открываю в браузере-ссылки есть, но
нажав на них, попадаю на первонаальную страницу базы(т.е. на a href=''http://server.ru/base.nsf")

Помогите пожалуйста разобраться
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Можно просто написать @Text(@DocumentUniqueID) + "?OpenDocument"
 
R

RonTermit

#3
я сделал так
формула столбика
Код:
Fa:="/"+@WebDbName+"/0/"+@Text(@DocumentUniqueID)+"?OpenDocument";
"<tr data-path='"+Fa+"' onclick='opendoc(this);' ><td class=\"td01\" >"+@Text(@Created;"D0S0")+"</td><td class=\"td02\">"+Header_Name +"</td></tr>"
.....и На jsheader формы
Код:
function opendoc(CurrTr) {
var docurl = CurrTr.getAttribute('data-path');
if (docurl=='') return;
location.href=docurl;
}
 
K

kilcher

#4
Можно просто написать @Text(@DocumentUniqueID) + "?OpenDocument"

т.е. формула в колонке
<tr><td><p><a href=''http://"+@Text(@DocumentUniqueID)+"?OpenDocument''>"+NumberDoc+"</a></p></td>
или я неправильно поняла? Мне кажется все дело в ". Нужно ведь,чтобы вся ссылка была в ""
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#5
Да. Используй фигурные скобки.
{<tr><td><p><a href=''} + @Text(@DocumentUniqueID) + {?OpenDocument">} + NumberDoc + {</a></p></td>}
 

hosm

* so what *
18.05.2009
2 442
6
#7
А так:
{<tr><td><p><a href=''/} + @Text(@DocumentUniqueID) + {?OpenDocument">} + NumberDoc + {</a></p></td>}
 

hosm

* so what *
18.05.2009
2 442
6
#9
"<tr><td><p><a href=\"http://server.ru/base.nsf/0/"+@Text(@DocumentUniqueID)+"?OpenDocument\">"+NumberDoc+"</a></p></td>"
 

NetWood

Lotus team
17.04.2008
374
20
#11
Тогда идем дальше. :)
Обзываете View именем pages или алиасом.
Делаете доку поле Pagename. Уникальное. И сортиреуете в первой клонке этого вью по полю pagename.

Будет работать http://server.ru/base.nsf/pages/pagename

всякие ?open или ?opendocument можно не ставить.

контроль уникальности поля
--- проверка введенных данных ----
PageID:=MainID;
isNew := @IsNewDoc;
isBlank := PageName = "";
notStillTheSame := !(PageName = tmpOldPageName);
unSafeChars := "\"": "\\" : ";" : "/" : "?" : ":" : "@" : "=" : "&" : "<" : ">" : "#" : "%" : "{" : "}" : "|" : "^" : "~" : "[" : "]" : "`" : @NewLine;
asciiRendered := @Ascii(PageName;[AllInRange]);
nonPrintable := (! isBlank) & (asciiRendered = "");
fallBack := asciiRendered != PageName;
unSafe := @Contains(PageName;unSafeChars);

lkup := @DbLookup("":"NoCache";"":"";"pages";PageName;2);
lkupOK :=!@IsError(lkup);
lkupIsDup := @If(lkupOK;
@Elements(lkup) > 1;
@False
);
lkupIsMe := @If(lkupOK;
lkup = @Text(PageID);
@False
);

@If(!@IsDocBeingSaved;
@Success;
isBlank;
@Failure("You must enter a page name");
lkupIsDup;
@Failure("The new Page's name is a duplicate. Enter a unique page name.");
lkupIsMe;
@Success;
notStillTheSame & lkupOK;
@Failure("The new Page's name is a duplicate. Enter a unique page name.");
unSafe;
@Failure("The page name contains a character that is unsafe for URLs");
nonPrintable;
@Failure("The page name contains a non-printable character that is not allowed for URLs");
fallBack;
@Failure("The page name contains a non-ASCII character that is not allowed for URLs");
@Success
)
 

hosm

* so what *
18.05.2009
2 442
6
#12
А можно я нагло вклинюсь в тему?
кто умный мне сможет ткнуть носом, куда мне стоит посмотреть, чтоб понять, почему на некоторых базах вот такие конструкции в вебе не работают:
http://хост/бд/0/UNIDдокумента?Open
http://хост/бд/0/UNIDдокумента
(ошибка 400-ошибочный запрос).
в логе: HTTP Web Server: Unknown Command Exception [урл]
а вот такие работают:
http://хост/бд/0/UNIDдокумента?OpenDocument
http://хост/бд/UNIDВьюхи/UNIDдокумента
для одних и тех же документов, базы, сервера.
---
Как-то с таким не сталкивалась - привыкла явно указывать ?OpenDocument или ?EditDocument.
Знаю, что по дефолту должно подразумеваться ?Open.
Что в урле или в дизайне БД не так, что не понравилось HTTP?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
276
#13
может дефолтного вью нет...
 

hosm

* so what *
18.05.2009
2 442
6
#14
есть. не скрыто для веб и при явном указании унида дефолтной вьюхи правильно открывает документ в вебе.

Добавлено: Сервера 7ка, клиенты 7ка и 8.5.
 

NetWood

Lotus team
17.04.2008
374
20
#15
тупо ошибка. две вьюхи имеют одинаковый алиас или нэйм. встречался. возможно, также, вью скрыто от web

вообще для доступа через WEB не имеет значения что за элемент дизайна. вью, страница или форма или скрипт. важно имя + ?
страница Help:
http://server.ru/base.nsf/help?openpage = http://server.ru/base.nsf/help

форма Topic:
http://server.ru/base.nsf/Topic?openform = http://server.ru/base.nsf/Topic
но
http://server.ru/base.nsf/Topic?readform - только чтение
слабо документировано но требуется иногда в качестве акшона на <form>
http://server.ru/base.nsf/Topic?save

следствие: если есть страница и форма имеют одинкаковый нэйм при открытии без ? будут грабли.

для JS и прочих элементов - та же история. Domino их не различает для открытия, только ? нужен верный
 

hosm

* so what *
18.05.2009
2 442
6
#16
NetWood
Я тупая:), я просто не поняла, как это относится к моему случаю. Теорию я эту знаю, понимаю и использую.
Я открываю по униду конкретный документ, без использования имени формы и вьюхи. База с таким именем одна на сервере. и с репликой такой тоже одна.
Дефолтная вьюха есть и не скрыта от веб, при прописывании ее унида документ замечательно открывается.
Вообще-то у нас явно никая вьюха не указана, стоит 0. документ представлен унидом.
Бред, конечно, но, возможно, унид расматривается как ключ для какой-то вьюхи? )
Форма с алиасом - да, есть 2 формы, у которых одинаковый алиас, но одна скрыта от веба, другая от LN. и в другой БД с аналогично концепцией подобные урлы работают... Если бы не работали, я бы сказала, что так нельзя и забила на это.
шучу: Остается вариант, что у каждого документа в той базе есть дубликат с таким же унидом?
например, среди элементов дизайна)))

Добавлено: в общем, если разберусь - отпишу. кто поможет в копании урлов - буду премного благодарна) базу выложить не смогу :(
 
13.03.2009
625
1
#17
самый простой (и железобетонный) вариант: http(s)://host/ReplicaID/UNID?OpenDocument
1. использует минимально необходимую информацию о таргете - базу и юнид. А вьюх вообще может не быть :)
2. благодаря replicaID можно использовать абсолютную адресацию - от корня хоста
3. нет заморочек с кодировками( urlencode кирилических имен видов )

Использования имени вида в url-е вынуждает сервер искать документ по ключу. Т.е. host/db/view/key?... - открывает документ из заданной вьюхи по заданному ключу. В т.ч. и host/db/0/unid. Грубо говоря, можно считать, что есть внутреннее представление с именем "0", сортированное по юниду. Фактически - использование таких ссылок - хак( фича, если угодно )
 

hosm

* so what *
18.05.2009
2 442
6
#18
turumbay спб за ответ.
1. озадачили. Почему-то у нас на сервере этот ЖБ-вариант выдает 500 :rolleyes: Давайте поговорим об этом? ;)
2. знаю, удобно, юзаю иногда.
3. в стандартах у нас прописано для русских имен использовать англоязычные алиасы.
 
13.03.2009
625
1
#19
turumbay спб за ответ.
1. озадачили. Почему-то у нас на сервере этот ЖБ-вариант выдает 500 :rolleyes: Давайте поговорим об этом? ;)
2. знаю, удобно, юзаю иногда.
3. в стандартах у нас прописано для русских имен использовать англоязычные алиасы.
Виноват. Написал чушь. Без указания вьюхи действительно не работает. Прошу прощения у участников за дезинформацию.
правильный вариант: host/replicaid/0/unid?OpenDocument

P.S. Имя вида должно присутствовать, но может быть чем угодно:
host/replicaid/0/unid?OpenDocument
host/replicaid/_/unid?OpenDocument
host/replicaid/пишем_любую_чушь/unid?OpenDocument
 

hosm

* so what *
18.05.2009
2 442
6
#20
забавно, вот еще что - поиск по виду вроде как отпадает:
Конструкция
Код:
http://hostname/database/ViewName/32dig_key?OpenDocument
если 32dig_key содержит допустимые для UNID-a символы БУДЕТ ПОДРАЗУМЕВАТЬ, что 32dig_key – это значение @DocumentUniqueID документа. Т.е. если Вы сохранили UNID в поле, создали вид, где в первой отсортированной колонке отображается значение этого поля, а реальный UNID документа по каким-то причинам изменился – то получите ошибку при попытке указать в качестве 32dig_key значение поля, вместо @text(@documentUniqueID).
Если у вас будет 32-разрядный ключ, содержащий символы Z или Q, то все будет нормально.