powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как сделать кнопки невидимыми при распечатке отчета?
7 сообщений из 32, страница 2 из 2
Как сделать кнопки невидимыми при распечатке отчета?
    #37115204
non-apexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ghjdjlrf, давайте создадим страницу на apex.oracle.com и там потренируемся на кошках
...
Рейтинг: 0 / 0
Как сделать кнопки невидимыми при распечатке отчета?
    #37115463
dvksqlru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ghjdjlrfусловие, наверно надо
если распечатываем тогда элемент виден. Как условие написать?
Наверно, можно как-то для всех сразу элементов это задать?

А если условие поставить для всего региона, содержащего непечатные элементы?
...
Рейтинг: 0 / 0
Как сделать кнопки невидимыми при распечатке отчета?
    #37401362
Boojum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ghjdjlrfnon-apexoidghjdjlrf, для печатного отчёта гораздо проще использовать страницу с шаблоном "Printer friendly". Если страницу нужно смотреть на экране, а при необходимости распечатать, можно установить параметр PRINTER_FRIENDLY в URL в значение YES.

http://trac1.kppm.ru:7780/pls/apext/f?p=1800:60:::::::Yes - наверно не так устанвалявается этот парметр, потому что отображается как обычно

Угу. Хотел попробовать сделать так... Нифига не получается :( Версия APEX 4.0.2
Создаю бранч на кнопку.

I. Если у бранча в Target type ставить Page in this application, то параметр Printer frendly установить негде. Нету его в настройках бранча.

II. Если у бранча в Target type поставить URL, то начинается вообще фантастическое кино:
1. Ставим в URL Target f?p=104:2:&APP_SESSION::::::YES или заменяем номера приложения и страницы на их алиасы:
f?p=APP_DOWNTIME:REP_SHIFT:&APP_SESSION::::::YES.
Запускаем, жмем на кнопку, получаем Bad request. URL в адресной строке при этом выглядит так:
<бла-бла>/apex/f?p=APP_DOWNTIME:REP_SHIFT:&APP_SESSION::::::YES
Возвращаемся к нашему бранчу и видим чудеса: Он сам поменял Target type обратно на Page in this application! Догадался, гад что на ту же страницу ссылаемся... (и в остальных случаях он будет вытворять то же самое).
2. Возвращаем тип обратно на URL, из URL target убираем параметр сессии:
f?p=APP_DOWNTIME:REP_SHIFT:::::::YES
Запускаем, жмем кнопку и получаем версию для печати... страницы Логина. Это ожидаемо, ибо сессию мы не указали, так что сервак снова просит залогиниться (но вместо полей ввода логина/пароля - простой текст, ибо версия для печати, так что не залогинишься).
URL в адресной строке имеет вид: <...>/apex/f?p=APP_DOWNTIME:REP_SHIFT:::::::YES
3. Значит надо как-то передать номер сессии. В юзергайде нарыл, что иногда надо конкретизировать workspace. Забиваем такой URL:
f?p=APP_DOWNTIME:REP_SHIFT:&APP_SESSION.&c=ws_downtinme::::::YES
Запускаем, жмем кнопку... Страница перегружается, по вид ее не printer-friendly не меняется. Смотрим на URL в адресной строке:
<...>/apex/f?p=APP_DOWNTIME:REP_SHIFT:2811475471795712:::::&c=ws_downtinme::::::YES
Ага! YES оказался не 9-м, как нужно, а 14-м параметром! Продолжаем танец с бубном:
4. Забиваем в бранч такой URL:
f?p=APP_DOWNTIME:REP_SHIFT:&APP_SESSION.&c=ws_downtinme:YES
Визуально результат такой же как в п. 3. Но URL в адресной строке изменился:
<...>/apex/f?p=APP_DOWNTIME:REP_SHIFT:2811475471795712:::::&c=ws_downtinme:YES
Теперь YES стоит на нужном нам 9-м, но щастья это никакого не приносит: страница отображается по-прежнему.
Ах да! Если открыть бранч, то увидим, что YES появился в поле REQUEST.

P.S.
Как уже говорил, после того, как нажали Apply changes на бранче, его тип автоматически меняется с URL на Page in this application. Но при этом параметры, введенные с помощью строки URL, таки работают при вызове этого бранча кнопкой. Но! Если открыть такой бранч и ничего не меняя нажать Apply changes, то параметры (типа того же YES в 9-й позиции) исчезнут.

Как с этим бороться или как с этим жить?
...
Рейтинг: 0 / 0
Как сделать кнопки невидимыми при распечатке отчета?
    #37402156
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoojumКак с этим бороться или как с этим жить?

Для начала - RTFM Using f?p Syntax to Link Pages . Потом нужно понять, как передаются параметры в HTTP методом GET. Тогда придёт понимание, что для URL
Код: plaintext
f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly
p - это параметр; а строка после знака равенства, разделённая двоеточиями - это значение этого параметра. Пары параметр=значение в URL разделяются амперсандом. А значит, когда Вы вставляете &c =ws_downtinme куда ни попадя, то в p записывается только часть до амперсанда. И APEX честно отображает то, что Вы от него требуете.

Кроме того, Вы не вcегда ставите точку в конце APP_SESSION. У Вас не включён атрибут приложения Exact Substitutions , как мне кажется, так что не забывайте про обязательность точки.

Чтобы перейти к странице через Branch и отобразить ее в Printer Friendly Mode, нужно создать на этой странице Before Header Process, который будет выполнять следующее:
Код: plaintext
APEX_APPLICATION.G_PRINTER_FRIENDLY := TRUE;
...
Рейтинг: 0 / 0
Как сделать кнопки невидимыми при распечатке отчета?
    #37402656
Boojum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerBoojumКак с этим бороться или как с этим жить?
Кроме того, Вы не вcегда ставите точку в конце APP_SESSION. У Вас не включён атрибут приложения Exact Substitutions , как мне кажется, так что не забывайте про обязательность точки.

Чтобы перейти к странице через Branch и отобразить ее в Printer Friendly Mode, нужно создать на этой странице Before Header Process, который будет выполнять следующее:
Код: plaintext
APEX_APPLICATION.G_PRINTER_FRIENDLY := TRUE;


1. Спасибо большое! Точки то я и не приметил... :( Точнее воспринял ее как обыкновенный знак препинания.

2. Exact substitutions был включен, ибо он таков по умолчанию и менять его у меня не было никакого резона.

3. А можно про процесс по-подробнее? Зачем он нужен то? Он жеж будет выставлять G_PRINTER_FRIENDLY в true в любом случае (и когда нужно и когда не нужно), не?

В обчем, заработало... в PRINTER FRIENDLY страничка стала побледнее, исчезла с нее кнопочка, да DatePicker превратился в строчку. Но, увы, совершенно ненужный и даже вредный для печатной версии search bar никуда не делся :( Можно его как-нибудь убрать (не навсегда, а только в печатной версии)?
...
Рейтинг: 0 / 0
Как сделать кнопки невидимыми при распечатке отчета?
    #37402660
Boojum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerBoojumКак с этим бороться или как с этим жить?
Потом нужно понять, как передаются параметры в HTTP методом GET. Тогда придёт понимание, что для URL
Код: plaintext
f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly
p - это параметр; а строка после знака равенства, разделённая двоеточиями - это значение этого параметра.

Насколько мне помнится, HTTP и GET не при делах. GET не парсит строку параметров, он ее просто передает. Парсит строку движок/скрипт веб-сервера, он же и определяет каков должен быть синтаксис строки параметров.

Кстати, об апекс, в котором "you can develop and deploy applications that are fast and secure" и методе GET... В строке параметров передается ID сессии. И, я так понимаю, любой, подглядевший/перехвативший URL, может получить доступ к приложению (и стало быть влезть в базу) с теми правами, что и исходный юзер, пока этот юзер не вылогинился... Так что насчет "secure" меня начинают терзать смутные сомнения....
...
Рейтинг: 0 / 0
Как сделать кнопки невидимыми при распечатке отчета?
    #37403077
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BoojumВ строке параметров передается ID сессии. И, я так понимаю, любой, подглядевший/перехвативший URL, может получить доступ к приложению (и стало быть влезть в базу) с теми правами, что и исходный юзер, пока этот юзер не вылогинился... Так что насчет "secure" меня начинают терзать смутные сомнения....
Там всё сложнее. Участвуют еще как минимум кукисы, можете проверить, установив у себя 2 браузера, и копируя ссылку из одного в другой ничего не выйдет, доступа не будет.
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как сделать кнопки невидимыми при распечатке отчета?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]