ссылки во View

Тема в разделе "Lotus - Программирование", создана пользователем kilcher, 12 мар 2010.

  1. kilcher

    kilcher Гость

    Доброго дня!

    Есть вью под веб. Требовалось оформить его вывод в браузере в виде таблицы.
    Сделали.
    А как теперь сделать значения в одной из колонок ссылками на документ???
    Написала в колонке 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")

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Можно просто написать @Text(@DocumentUniqueID) + "?OpenDocument"
     
  3. RonTermit

    RonTermit Гость

    я сделал так
    формула столбика
    Код (Text):
    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 формы
    Код (Text):
    function opendoc(CurrTr) {
    var docurl = CurrTr.getAttribute('data-path');
    if (docurl=='') return;
    location.href=docurl;
    }
     
  4. kilcher

    kilcher Гость


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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Да. Используй фигурные скобки.
    {<tr><td><p><a href=''} + @Text(@DocumentUniqueID) + {?OpenDocument">} + NumberDoc + {</a></p></td>}
     
  6. kilcher

    kilcher Гость


    Все равно не работает ^_^
    При нажатии на ссылку попадаю на стартовую страницу
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А так:
    {<tr><td><p><a href=''/} + @Text(@DocumentUniqueID) + {?OpenDocument">} + NumberDoc + {</a></p></td>}
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Посмотри как ссылка в браузере выглядит.
     
  9. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    "<tr><td><p><a href=\"http://server.ru/base.nsf/0/"+@Text(@DocumentUniqueID)+"?OpenDocument\">"+NumberDoc+"</a></p></td>"
     
  10. kilcher

    kilcher Гость


    Ура!!! Заработало с ноликом!!!! Спасибо!!! :rolleyes:
     
  11. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Тогда идем дальше. :)
    Обзываете 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
    )
     
  12. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А можно я нагло вклинюсь в тему?
    кто умный мне сможет ткнуть носом, куда мне стоит посмотреть, чтоб понять, почему на некоторых базах вот такие конструкции в вебе не работают:
    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?
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    может дефолтного вью нет...
     
  14. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    есть. не скрыто для веб и при явном указании унида дефолтной вьюхи правильно открывает документ в вебе.

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

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    тупо ошибка. две вьюхи имеют одинаковый алиас или нэйм. встречался. возможно, также, вью скрыто от 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 их не различает для открытия, только ? нужен верный
     
  16. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    NetWood
    Я тупая:), я просто не поняла, как это относится к моему случаю. Теорию я эту знаю, понимаю и использую.
    Я открываю по униду конкретный документ, без использования имени формы и вьюхи. База с таким именем одна на сервере. и с репликой такой тоже одна.
    Дефолтная вьюха есть и не скрыта от веб, при прописывании ее унида документ замечательно открывается.
    Вообще-то у нас явно никая вьюха не указана, стоит 0. документ представлен унидом.
    Бред, конечно, но, возможно, унид расматривается как ключ для какой-то вьюхи? )
    Форма с алиасом - да, есть 2 формы, у которых одинаковый алиас, но одна скрыта от веба, другая от LN. и в другой БД с аналогично концепцией подобные урлы работают... Если бы не работали, я бы сказала, что так нельзя и забила на это.
    шучу: Остается вариант, что у каждого документа в той базе есть дубликат с таким же унидом?
    например, среди элементов дизайна)))

    Добавлено: в общем, если разберусь - отпишу. кто поможет в копании урлов - буду премного благодарна) базу выложить не смогу :(
     
  17. turumbay

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

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    turumbay спб за ответ.
    1. озадачили. Почему-то у нас на сервере этот ЖБ-вариант выдает 500 :rolleyes: Давайте поговорим об этом? ;)
    2. знаю, удобно, юзаю иногда.
    3. в стандартах у нас прописано для русских имен использовать англоязычные алиасы.
     
  19. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Виноват. Написал чушь. Без указания вьюхи действительно не работает. Прошу прощения у участников за дезинформацию.
    правильный вариант: host/replicaid/0/unid?OpenDocument

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

    hosm * so what *

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

Поделиться этой страницей