Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Web Ирбис и Z-Ирбис :  ИРБИС Irbis
 
Страницы: 12>>
Страница: 1 из 2
Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 26, March, 2005 16:52

Речь пойдет про referings.pft
Глянул я туда и остолбенел... лучше бы я туда не глядел :)... В общем, править самому мне совсем не захотелось... а проблема в том, что если найдено не много записей (в моем случае 23), тогда ссылки строятся так

1-10 21-23

Мало того, что куда просто выпали записи с 11 по 20, так еще чтобы исправить вид этого вывода, мне надо клаза выворотить на изнанку и мозги вскипятить :)...
Я не про то, что это не работает. Работает. Просто оно работает не правильно иногда и править самостоятельно не очень удобно, мягко говоря. Форматы - это, конечно, круто, но вот мне просто ОЧЕНЬ понравился механизм, который использовался в последней версии 32-го веба (еще последней архитектуры). Просто, гибко и не навязчего. Меняй, что хочешь на здоровье. А туут...
Попробовал написать что-то свое, но получилось еще страшнее :)...

Костя, может эти ссылки заменить на старый вариант? Ну очень удобно было. Или переписать как-нибудь по-понятнее.

ЗЫ. Догадываюсь, конечно, что на эти реферы ты убил недели 2, но стоило ли оно того?

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Константин Сбойчаков (IP-адрес скрыт)
Дата: 28, March, 2005 11:16

Этот формат работает очень просто
Его особенность в том что требуется обязательно задать все параметры

S21CNR
S21STN
S21REF
У тебя случай когда размер порции S21CNR не согласован со стартовым номером S21STN
Параметр S21REF задает число видимых ссылок и тоже должен быть не пустым

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 04, April, 2005 14:13

А если я не хочу так:
1-10 41-50 51-60 61-70 101-107
а хочу так:
<<< << [41..50] [51..60] [61..70] >> >>>
Ну или чо-нить в этом духе. Мне же его полностью пересматривать, вникать и искать, где поправить.
Предлагаю вынести варианты оформления в INI файл и из него доставать в этом формате для текущей базы.

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Константин Сбойчаков (IP-адрес скрыт)
Дата: 04, April, 2005 14:23

А если открыть этот формат в GENPFT64 сделать модельную запись с данными в нужных полях и отладить под себя?
Тем более что есть возможность сразу смотреть как результат будет выглядеть в браузере
По моему это проще чем параметрировать - больше гибкости

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 04, April, 2005 14:42

Намек понял :)))

Re: Веб-64. Формирование ссылок
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 18, October, 2005 19:21

Намек понял и сделал :)...
Вот так это теперь выглядит у меня
http://elib.mubint.ru/images/staff/refer_tmp.gif
Исходными файлами могу поделится с кем надо.
Кратко о главном: построено все на ГП. Если какое-то значение не задано, то оно устанавливается по умолчанию. Правится достаточно легко + все стили параметризируются и размещены централизовано.
Вывод: получил то, что хотел и даже лучше :)
А вообще, как на счет включения этого дела в дистриб?

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: А. Роман (IP-адрес скрыт)
Дата: 19, October, 2005 11:12

Максим, а могу я быть "кем надо"? :)
Если - да, замыльте, пожалуйста, формат! За одно интересно будет посмотреть как Вы расправляетесь с &uf('+1...')



Отправка отредактированного (19-10-05 11:19)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 19, October, 2005 18:19

Выслал. Жду отзывов...

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 01, December, 2005 20:58

Теперь еще и выложил. Смотрите мой хоумпейдж в профиле (раздел "Файлы настроек для ИРБИС").

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 14, December, 2005 02:30

Максим, я тоже решил воспользоваться вашей разработкой. У вас на сайте всё работает великолепно. Ссылки «в начало» «в конец», в виде стрелочек, значительно упрощают навигацию. Код просматривать – одно удовольствие(в сравнении с изначальным вариантом - особенно), всё аккуратно, с комментариями, без дублирующихся фрагментов. Быстро и без проблем удалось переделать create_link для метода POST(после смены кодировки GET мне противопоказан), но увы, ссылки выводятся некорректно.
Вот такие значения модельных полей
#1/1:_ ELIB
#2/1:_ S
#3/1:_ 21
#4/1:_ 10
#6/1:_ (<.>MHR=АБ$<.>)
#7/1:_ MHR=АБ|
#1007/1:_ UP
#1009/1:_ allweb
#1050/1:_ ELIB
#1052/1:_ 1
#1100/1:_
#1001/1:_ 58

В итоге выдаётся
1-10 11-20
Кроме того, нет никакого следа рисунков. ( <image src="/Irbis32r/images/first_page.gif" border="0">&nbsp;&nbsp;).

Я решил, прежде чем начать «кипятить свои мозги», спросить у вас: на FTP сейчас последний релиз? Если да, то может быть вы видите мою ошибку?

PS
Версию из базовой поставки я тоже проверял. Там всё хорошо начинается и плохо кончается. Вначале выводится полный набор ссылок, а потом середина пропускается. Так что, в IRBIS 32 всё не лучше, чем в 64.

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 14, December, 2005 03:27

Ничего не понимаю. Протестировал в GENPFT с модельными полями. Ваш формат, Максим, работает без проблем!

Пока у меня только одна гипотеза: форматер CGIIRBIS_32 интерпретирует что-то как ошибку, спотыкается об это и отккказывается нормально работать. Ни разу не выводился тег с рисунком.



Отправка отредактированного (14-12-05 03:28)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Карауш (IP-адрес скрыт)
Дата: 14, December, 2005 09:38

Я что-то ничего не понял в алгоритмах (времени не хватило), но может проблема в больших и маленьких буквах в названиях графических файлов? Это же для web критично.

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 14, December, 2005 15:33

Карауш писал(а):

> Я что-то ничего не понял в алгоритмах (времени не хватило),
> но может проблема в больших и маленьких буквах в названиях
> графических файлов? Это же для web критично.

Александр Сергеевич, я говорил именно о ТЕГАХ <image. Конечно, в браузере что-то может отображаться некорректно, но здесь проблема возникает именно на этапе генерации страницы.

Выявил ещё одну крайне странную ошибку. В формате create_link.pft я применял условные литералы для вывода строк, содержащих кавычки. Чтобы выводить строки, требовалось определить поле, которое всегда присутствует в записи. Я выбрал модельное поле 1 - название базы. Так вот, при показе эти конструкции выводились не всегда...

,|<a href="javascript: document.go_reference.S21STN.value='|d1,

Re: Веб-64. Формирование ссылок
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 14, December, 2005 20:45

Кирилл, могу предположить (сам сталкнулся), что цги использует dll, которая не знает, что такое глобальные переменные. Я просто переписал длл из обычного ирбиса в веб и все сразу заработало.
Или я тоже что-то не так понял. Можете заслать мне на почту свой вариант. Поглядим вместе.

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 15, December, 2005 01:37

Да, теперь нет сомнения: всеми проблемами мы обязаны кривизне CGI. Только что заметил: в веб странице отсутствует заключительная часть таблицы, вывод которой не связан ни с какими условиями. Значит модуль диагностирует ошибку, определение которой за отсутствием LOG файла, конечно невозможно.

Вот новые данные, которые, надо сказать, завели меня в полный тупик.
Незначительно изменённая и прокомментированная конструкция из Referings, предназначенная для вывода ссылок справа:

if &uf('+1R5')<>'0' then,
(if val(&uf('+1R5'))>0 then,
&uf('+1R15'),
,"Определяем значение S21STN",
&uf('+1W19#'f(val(&uf('+1R4'))+val(&uf('+1R6'))*val(&uf('+1R3')),1,0)),
,"Выводим ссылку",
#,&uf('6create_link'),#

f(val(&uf('+1R4'))+val(&uf('+1R6'))*val(&uf('+1R3')),1,0),

,"Выводим разделитель диапазона(-)",
&uf('+1R10'),

,"Если номер последней записи вычисленного диапазона меньше общего количества найденных записей, выводим номер записи вычисленного диапазона",

if val(&uf('+1R4'))+val(&uf('+1R6'))*val(&uf('+1R3'))+val(&uf('+1R3'))-1<val(&uf('+1R2')) then,
f(val(&uf('+1R4'))+val(&uf('+1R6'))*val(&uf('+1R3'))+val(&uf('+1R3'))-1,1,0),
else,
,"если меньше, то выводим последнюю найденную запись"
&uf('+1R2'),
fi,
'</a>',
,"Строка после правой ссылки(пробел)",
&uf('+1R16'),
,"После вывода ссылки, уменьшаем значение счётчика",
&uf('+1W5#',f(val(&uf('+1R5'))-1,1,0)),
&uf('+1W6#',f(val(&uf('+1R6'))+1,1,0)),
,'Значение R5:',&uf('+1R5'),#
fi,),
fi,'Конструкция правильно интерпретирована!',



Отправка отредактированного (15-12-05 02:18)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 15, December, 2005 01:37

ЗНАЧЕНИЯ МОДЕЛЬНЫХ ПОЛЕЙ:
#3/1:_ 1
#4/1:_ 10
#1001/1:_ 58

ВЫВОДИТСЯ В РЕДАКТОРЕ PFT:
<a href="javascript: document.go_reference.S21STN.value='11'; document.go_reference.submit();">
11-20</a>&nbsp;Значение R5:1
&nbsp;<a href="javascript: document.go_reference.S21STN.value='21'; document.go_reference.submit();">
21-30</a>&nbsp;Значение R5:
Конструкция правильно интерпретирована!

[ДАЛЬШЕ СЛЕДУЕТ НОРМАЛЬНЫЙ КОД]

ВЫВОДИТСЯ В WEB:
<a href="javascript: document.go_reference.S21STN.value='11'; document.go_reference.submit();">
11-20</a>&nbsp;Значение R5:1
&nbsp;<a href="javascript: document.go_reference.S21STN.value='21'; document.go_reference.submit();">
21-30</a>&nbsp;Значение R5:0

[ВЕСЬ ПОСЛЕДУЮЩИЙ КОД ИГНОРИРУЕТСЯ, Т. Е. КОНСТРУКЦИЯ ВЫЗЫВАЕТ ОШИБКУ]

Всё можно было бы понять, кроме одного: почему в одном случае значение &uf('+1R5') - пустота, а в другом - ‘0’. Ведь функции VAL и F - это даже не изобретение разработчиков; они приехали к нам из Бразилии и располагаются в одной библиотеке!

Константин Олегович, очень хотелось бы услышать ваш комментарий!



Отправка отредактированного (15-12-05 19:35)

Re: Веб-64. Формирование ссылок
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 15, December, 2005 02:19

Панев Максим писал(а):

> Кирилл, могу предположить (сам сталкнулся), что цги
> использует dll, которая не знает, что такое глобальные
> переменные. Я просто переписал длл из обычного ирбиса в веб и
> все сразу заработало.

Не похоже. Во-первых, здесь глобальные переменные поддерживаются, а во-вторых, эти функции зашиты в FORMAT32, которая берётся CGI из каталога IRBIS(в котором базы и настройки). Что касается Isis32.dll, то она она не менялась с 1999 года.
У меня в директории WINDOWS действительно лежали старые версии, но после их удаления ничего не изменилось: всё таки CGI пользуется той, которая лежит рядом с ним или в каталоге IRBIS.
Если бы только что это не проверил, согласился бы, что дело в старой библиотеке. Очень похоже.

> Или я тоже что-то не так понял. Можете заслать мне на почту
> свой вариант. Поглядим вместе.

Мой вариант - всё ещё демонстрационная версия WEB 32-64(деньги до Татьяны Анатольевны ещё идут. . . ) + ваша модификация rererings. В общем, всё стандартное.



Отправка отредактированного (15-12-05 02:53)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 15, December, 2005 02:22

Роман, скажите пожалуйста, вам удалось заставить работать формат Максима? Вы писали, что у вас версия WEB 32, аналогичная демонстрационной.



Отправка отредактированного (15-12-05 02:58)

Re: Веб-64. Формирование ссылок
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 15, December, 2005 11:39

Я готов вам помочь (совершенно не важно что у вас, дема или нормальная версия), но мне для этого хочется видеть все, что вы изменили. Я тоже заинтересован в том, чтобы это корретно работало и в вебе32.
Да, и еще. То, что получается, можно посмотреть в брафзере?

Re: Веб-64. Формирование ссылок
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 15, December, 2005 13:00

Панев Максим писал(а):

> Я готов вам помочь (совершенно не важно что у вас, дема или
> нормальная версия), но мне для этого хочется видеть все, что вы
> изменили. Я тоже заинтересован в том, чтобы это корретно
> работало и в вебе32.
> Да, и еще. То, что получается, можно посмотреть в брафзере?

Прислал вам свои файлы. Я опасался, что некорректно интерпретируются комментарии и вложенные форматы, поэтому способ их вставки. Больше никаких исправлений не делал. Хочу подчеркнуть, что всё то же самое было и до какого-либо моего вмешательства в формат. На первой странице так же не выводились стрелки; дальше проверить уже не мог.
Ваш код, Максим, тут не при чём. Дело в кривизне форматера. Выявить, что именно вызывает ошибку совершенно необходимо, она неизменно будет повторяться при других обстоятельствах и в других форматах.



Отправка отредактированного (15-12-05 13:04)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 18, December, 2005 00:20

Примеры, которые я приводил, были достаточно выразительными, но конечно трудночитаемыми без подсветки. Я говорил о функциях F и Val но не уточнил, что именно в них скрыта ошибка(причина зацикливания), поскольку это несмотря на всю очевидность, казалось мне тогда невероятным.

Конструкция f(val('0'),0,0) в норме не должна возвращать ровным счётом ничего, т.е. =''. Так и происходит во всех модулях и в редакторе форматов, но не в WEB IRBIS...
Т.е. во всех приложениях кроме WEB IRBIS нижеприведённый цикл возвращает
Значение R5: 1
Значение R5:
Конструкция правильно интерпретирована!**

В WEB -
Значение R5: 1 Значение R5: 0 Значение R5: -1 Значение R5: -2 Значение R5: -3 Значение R5: -4 Значение R5: -5 Значение R5: -6 Значение R5: -7 Значение R5: -8 Значение R5: -9 Значение R5: -10 Значение R5: -11

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 18, December, 2005 00:21

Таким образом, у нас классический пример зацикливания....

&uf('+1'),
&uf('+1W5#2'),
,,####
(if &uf('+1R5')<>'' then,

&uf('+1W5#',f(val(&uf('+1R5'))-1,0,0)),
,'Значение R5: ',&uf('+1R5'),#
fi,),
,'Конструкция правильно интерпретирована!',

'*',f(val('0'),0,0),'*'
######

Конечно, ЭТУ ошибку можно исправить(if &uf('+1R5')='0' then &uf('+1W5#') fi). Но разве то, что происходит нормально? Возможно ли нормально работать, когда подводит даже интерпретатор кода?

PS
Не поленился и проверил обращение CGIIRBIS_32 к файлам. Он использует именно ту библиотеку, которая лежит рядом с ним.



Отправка отредактированного (18-12-05 00:29)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 18, December, 2005 00:42

PS2
Желающим могу выслать работающий в IRBIS 32 формат Максима.

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 19, December, 2005 21:03

Позвольте с Вами не согласится, Кирилл.
"...Конструкция f(val('0'),0,0) в норме не должна возвращать ровным счётом ничего, т.е. =''..."
В документации черным по белому про функцию val "Если не найдено ни одно числовое значение, то функция возвращает значение ноль. Если текст содержит более, чем одно числовое значение, возвращается только первое". Значит F на входе получает число 0.
Теперь про F: "Первый аргумент, выр-1, является числом, которое необходимо преобразовать. Второй аргумент, выр-2, - минимальная длина выходной строки, выделяемая для результата, и третий аргумент, выр-3, - количество десятичных цифр"
Согласно описанию, в рассматриваемом случае переданный в качестве первого параметра ноль имеет строковую длину 1. Поскольку второй параметр определяет не максимальную, а минимальную длину, то результат функции F автоматически становится длиной 1. А значит конструкция f(val('0'),0,0) должна возвращать во всех случаях 0 и только 0. Даже если вы напишите f(val('тут типа текст'),0,0), то результатом выполнения такой функции все равно долен быть 0. Если вы напишите f(val('тут типа текст, а внутри ткста число345за которым опять текст и число 567788'),0,0), то функция вернет "345".

Тогда получается что ваше утверждение "Так и происходит во всех модулях и в редакторе форматов, но не в WEB IRBIS" нужно переписать так:
"Ну надо же, во всех модулях форматер работает не правильно, и только в веб-ирбисе он корректен".

Лично я говорю вам СПАСИБО за найденную ошибку. И присоединяюсь к просьбе привести все-таки форматер к общему варианту.

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 20, December, 2005 00:41

«Поскольку второй параметр[функции F] определяет не максимальную, а минимальную длину, то результат функции F автоматически становится длиной 1.»

Вот это неверно. Если второй параметр - 0, то нулевая длинна первого параметра - то же, что и его отсутствие. Иначе говоря, из наличия второго параметр, при его нулевом значении, вовсе не следует, что функция должна возвращать строковый ноль.

Я полагаю, что вы спутали мой и свой вариант написания этой конструкции. Вы предпочитали пользоваться f(val(), 1, 0), a я привык пользоваться f(val(), 0, 0). К первому варианту ваше утверждение, пожалуй, применимо в большей степени. Тем не менее, длинна строки всё равно определяется пробелами, а не нулями.

1. Проблема заключается именно в функции f(). Val() выдаёт нормальное значение.
2. Функция f(val(‘0’), 0, 0) эквивалентна f(0, 0, 0) и ничего не возвращает.
3. При нулевом значении, параметр 2 и 3 вообще могут не использоваться, т. е. f(0, 0, 0) =f(0)



Отправка отредактированного (20-12-05 00:55)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 20, December, 2005 00:42

PS
Надо заметить, что наши с вами сообщения по поводу функций следовало бы поместить в ветку "Ужасная документация и справка",как вещественное доказательство справедливости обозначенного в заголовке утверждения. :) Так что не пинайте лишний раз неофитов и будьте с ними гуманнее. :)

И ещё, по поводу документации. Весь её раздел, посвящённый языку форматирования, полностью содран с описания системы CDS/ISIS. Причём сделано это даже без учёта оригинального форматирования. В результате, от одной только иллюстрации работы функции F() ломается голова любого профессионала.

Вот оригинал(пробелы обозначены символами подчёркивания)
f(1,5,2)________________1.00
f(1,8,2)___________________1.00
f(mfn,1,0)_____________4
f(mfn,2,0)______________4
f(mfn,3,0)_______________4

А вот то, во что разработчики превратили это в ПОСЛЕДНЕЙ версии инструкции, ещё и оставив форматирование пробелами...

f(1,5,2)_______________________________1.00
f(1,8,2)_______________________________1.00
f(mfn,1,0)___________________________4
f(mfn,2,0)___________________________4
f(mfn,3,0)___________________________4

PS2
Максим, доведите пожалуйста приведённую здесь информацию до г.Бродовского, который за это всё отвечает. Я полагаю, он не заглядывает в этот форум.



Отправка отредактированного (20-12-05 12:24)

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 20, December, 2005 15:40

Александр Иосифович может в веб и не заглядывает, но вот Костя Сбойчаков тут должен бывать, так что:
1. Хотелось бы услышать от ГПНТБ, что все-таки должна возвращать конструкция f(val('0'), 0, 0)?
2. Это ошибка или так задумано?

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Константин Сбойчаков (IP-адрес скрыт)
Дата: 21, December, 2005 18:21

f(val('0'), 0, 0) возвращает пустоту
Сейчас я все доработки делаю для ИРБИС64 и ИРБИС32 остается без изменений.
Код форматера ИРБИС32 добавлен в cgi так что возможны некоторые разночтения в работе генератора форматов ИРБИС32 и форматера в шлюзе.
Максим - пришли мне пожалуйста свой формат формирования ссылок и я отлажу его у себя.

Формат referings из дистрибутива работает правильно в ИРБИС32 и в ИРБИС64.
В чем состоит вопрос о его работе?

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 21, December, 2005 18:41

Если эта конструкция возвращает пустоту, тогда получается, что документация не верна. Или это просто частный случай выполнения функции? Я настаиваю на варианте из документации, поскольку это бедут логически более правильно. Или тогда второй параметр должен определять максимальную длину возвращаемой строки.
Мой реферингс можно взять по ссылке
[elib.mubint.ru]

Дистрибутивный вариант работает, только вот способ формирования ссылок не очень удобный, формат не читается + править достаточно сложно. В этом и состоит вопрос в его использовании.

Re: Веб-64. Формирование ссылок "Далее"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 22, December, 2005 01:03

Константин Сбойчаков писал(а):

> Сейчас я все доработки делаю для ИРБИС64 и ИРБИС32 остается
> без изменений.
Константин Олегович, так что же должны делать пользователи IRBIS 32, которых сегодня подавляющее большинство и которые так же заплатили за программу 1200$? Когда можно ожидать исправленную версию WEB 32?

Страницы: 12>>
Страница: 1 из 2


Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.