Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Наступна ревізія | Попередня ревізія | ||
nodeny:docs:calls.pm [25/01/2023 21:47] – створено Method | nodeny:docs:calls.pm [15/05/2023 12:46] (поточний) – [%%_(%%)] Method | ||
---|---|---|---|
Рядок 106: | Рядок 106: | ||
< | < | ||
Show Message | Show Message | ||
+ | WideBox(' | ||
+ | </ | ||
+ | |||
+ | **Box** виводить темплейт box.html. Усі параметри необов' | ||
+ | |||
+ | * title - заголовок повідомлення | ||
+ | * msg - повідомлення | ||
+ | * wide - якщо встановлений, | ||
+ | * css_class - css class повідомлення | ||
+ | |||
+ | < | ||
+ | Show Box( | ||
+ | title => ' | ||
+ | wide => 1, | ||
+ | msg => ' | ||
+ | | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | **WideBox** теж, що й Box, але параметр wide встановлений в 1 | ||
+ | |||
+ | < | ||
+ | Show WideBox(); | ||
+ | </ | ||
+ | |||
+ | **Menu** | ||
+ | |||
+ | Menu теж, що і MessageWideBox, | ||
+ | |||
+ | < | ||
+ | ToLeft Menu( | ||
+ | | ||
+ | | ||
+ | | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | **Center** виводить інформацію відцентрованої по горизонталі | ||
+ | |||
+ | < | ||
+ | Show Center MessageBox(' | ||
+ | </ | ||
+ | |||
+ | Відмінність від css h_center у цьому, що дозволяє центрувати як текст. | ||
+ | |||
+ | **Error** виводить повідомлення про помилку та завершує виконання скриптів | ||
+ | |||
+ | < | ||
+ | 1 > 2 && Error(' | ||
+ | </ | ||
+ | |||
+ | **Error_** теж, що й Error, але повідомлення обробляється підпрограмою %%_(%%) | ||
+ | |||
+ | < | ||
+ | $lang:: | ||
+ | Error_($lang:: | ||
+ | </ | ||
+ | |||
+ | **ErrorMess** теж, що й Error, але виконання скрипту не припиняється | ||
+ | |||
+ | < | ||
+ | ErrorMess(' | ||
+ | Error(' | ||
+ | </ | ||
+ | |||
+ | ===== Pay_to_DB ===== | ||
+ | |||
+ | **Pay_to_DB** створює запис у таблиці pays за вхідними параметрами: | ||
+ | |||
+ | * uid - id клієнта, | ||
+ | * cash – сума, або 0, якщо платіж не фінансовий. Необов' | ||
+ | * reason - поле reason. Необов' | ||
+ | * comment – поле comment. Необов' | ||
+ | * time - timestamp платежу. Необов' | ||
+ | * category - категорія. Обов' | ||
+ | |||
+ | Повертає 1 у разі успішного запису. У параметрах запису автоматично встановлюється автор адмін або клієнт залежно від авторизованого. Також встановлюється IP. | ||
+ | |||
+ | \\ Якщо запис фінансовий, | ||
+ | |||
+ | < | ||
+ | Db-> | ||
+ | my $rows1 = Db-> | ||
+ | my $rows2 = Pay_to_DB(uid=> | ||
+ | if( $rows1 < 1 || $rows2 < 1 || !Db-> | ||
+ | { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Тут Db-> | ||
+ | |||
+ | ===== Get_usr_info ===== | ||
+ | |||
+ | |||
+ | Отримує дані клієнта щодо його id. У разі успіху повертає посилання на хеш з даними, | ||
+ | |||
+ | < | ||
+ | my $ info = Get_usr_info(15); | ||
+ | ref $info або Error $info; | ||
+ | Show ' | ||
+ | </ | ||
+ | |||
+ | Підпрограма повертає як основні дані, а й додаткові поля, і навіть список ip, які належать клієнту. | ||
+ | |||
+ | < | ||
+ | debug(' | ||
+ | </ | ||
+ | |||
+ | ===== _() ===== | ||
+ | |||
+ | |||
+ | Підпрограма, | ||
+ | |||
+ | < | ||
+ | Show _(' | ||
+ | </ | ||
+ | |||
+ | Перетворюється на: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Як видно, квадратні дужки вказують на вставку чергового параметра у поточне місце. При цьому перше слово у квадратних дужках вказує на тег. Є кілька зарезервованих слів, які не вказують на тег, наприклад, | ||
+ | |||
+ | < | ||
+ | Show _(' | ||
+ | </ | ||
+ | |||
+ | Перетворюється на рядок «Ви ввели <span class=' | ||
+ | |||
+ | ====== Таблиці ====== | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | # Створюємо таблицю | ||
+ | my $tbl = tbl-> | ||
+ | # Перший рядок | ||
+ | | ||
+ | # Другий рядок | ||
+ | | ||
+ | # Виводимо таблицю | ||
+ | Show $tbl-> | ||
+ | </ | ||
+ | |||
+ | Методом new створюється нова порожня таблиця. Вхідні параметри: | ||
+ | |||
+ | < | ||
+ | -class : css class таблиці | ||
+ | -row1 : css class першого ряду | ||
+ | -row2 : css class другого ряду | ||
+ | </ | ||
+ | |||
+ | Параметри не є обов' | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | my $tbl1 = tbl-> | ||
+ | # Class для таблиці 2 буде ' | ||
+ | my $tbl2 = $tb1-> | ||
+ | </ | ||
+ | |||
+ | Приклади класів для таблиць | ||
+ | |||
+ | < | ||
+ | td_wide : таблиця максимальної ширини | ||
+ | fade_border : осередки відокремлюються напівпрозорими лініями | ||
+ | pretty : якщо в таблиці буде мало рядків, | ||
+ | td_ok : оптимальний паддинг для осередків таблиці | ||
+ | td_tall : високі рядки | ||
+ | td_medium : рядки середньої висоти | ||
+ | td_wide : широкі осередки | ||
+ | td_narrow : вузькі осередки | ||
+ | </ | ||
+ | |||
+ | Рядки додаються методами add (наприкінці таблиці) і ins (на початок таблиці.). Формат параметрів: | ||
+ | |||
+ | * css ряду, що вставляється | ||
+ | * рядок - карта осередків | ||
+ | * осередок 1 | ||
+ | * осередок 2 | ||
+ | * ... | ||
+ | |||
+ | Якщо в css буде символ зірочка - це вказівка дати ряду css з параметра -row1, після чого значення в -row1 і -row2 обміняються місцями. У такий спосіб можна організувати «зебру». | ||
+ | |||
+ | Карта осередків - це рядок, який описує вирівнювання кожного осередку: | ||
+ | |||
+ | < | ||
+ | l : вирівнювання по лівому краю | ||
+ | r : з правого | ||
+ | c : по центру | ||
+ | L : по лівому та 2 осередки об' | ||
+ | R : праворуч і 2 осередки об' | ||
+ | C : по центру та 2 осередки об' | ||
+ | E : по лівому та 3 осередки об' | ||
+ | 3 : по центру та 3 осередки об' | ||
+ | 4 : по центру та 4 осередки об' | ||
+ | .. | ||
+ | 9: по центру та 9 осередків об' | ||
+ | t : по центру та вертикальне вирівнювання top | ||
+ | T : 2 осередки в одну, по центру та вертикальне вирівнювання top | ||
+ | пробіл : порожній осередок | ||
+ | </ | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | my $tbl = tbl-> | ||
+ | | ||
+ | | ||
+ | | ||
+ | Show $tbl-> | ||
+ | </ | ||
+ | |||
+ | Якщо будь-яка комірка буде у квадратних дужках - це відключить фільтрацію html-спецсимволів. Якщо ви відображаєте дані, надіслані клієнтом, | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Автоматично ведеться облік рядків та стовпців таблиці. Метод rows дозволяє отримати поточну кількість рядів. Якщо при вставці рядків з' | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | # return не спрацює т.к. у таблиці 2 рядки | ||
+ | | ||
+ | </ | ||
+ | |||
+ | **Альтернативний спосіб вставки рядків** дозволяє надавати css клас персонально кожному осередку (а не тільки всьому рядку в цілому). Крім того, для кожного осередку вказується заголовок. Кожен рядок необхідно обернути у квадратні дужки: | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | | ||
+ | [ 'bold h_left', | ||
+ | [ ' | ||
+ | ]); | ||
+ | </ | ||
+ | |||
+ | У результаті буде вставлено рядок із двома осередками: | ||
+ | |||
+ | \\ \\ ====== Package Url ====== | ||
+ | |||
+ | Призначений на формування гіперпосилань. | ||
+ | |||
+ | Методи | ||
+ | |||
+ | < | ||
+ | new : створення нового об' | ||
+ | a : рендеринг url-об' | ||
+ | post_a : рендеринг у гіперпосилання, | ||
+ | | ||
+ | form : рендеринг url-об' | ||
+ | url: отримання url з об' | ||
+ | redirect: редирект | ||
+ | </ | ||
+ | |||
+ | Якщо параметр **не** починається зі знака тире – це параметр url-а: | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | my $url = url-> | ||
+ | Show $url-> | ||
+ | </ | ||
+ | |||
+ | Буде перетворено на <a href='? | ||
+ | |||
+ | Одне посилання можна створити на основі іншого, | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | my $url = url-> | ||
+ | my $ url2 = url-> new (b => 3); #? | ||
+ | | ||
+ | Show $url2-> | ||
+ | | ||
+ | Show $url2-> | ||
+ | </ | ||
+ | |||
+ | У всіх параметрах ескейп html-спецсимволи. Квадратні дужки відключають це, найчастіше необхідно для тексту посилання: | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | my $url = url-> | ||
+ | | ||
+ | Show $url->a( [ '< | ||
+ | </ | ||
+ | |||
+ | У формах порядок параметрів відрізняється від гіперпосилання, | ||
+ | |||
+ | perl код | ||
+ | |||
+ | < | ||
+ | my $form = _(' | ||
+ | ' | ||
+ | | ||
+ | | ||
+ | ); | ||
+ | my $form = $Url-> | ||
+ | | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | Параметр -ajax автоматично конвертується на -class=' | ||
+ | |||
+ | \\ \\ ====== Package Db ====== | ||
+ | |||
+ | Призначений для роботи з базою даних. Основний метод – sql. | ||
+ | |||
+ | 2 формати виклику | ||
+ | |||
+ | * Db-> | ||
+ | * Db-> | ||
+ | |||
+ | Якщо необхідна вибірка лише одного рядка: | ||
+ | |||
+ | < | ||
+ | my %p = Db-> | ||
+ | </ | ||
+ | |||
+ | Хеш %p порожній якщо | ||
+ | |||
+ | * Порожня вибірка | ||
+ | * сталася помилка (невірний sql, дисконнект БД,...) | ||
+ | |||
+ | Щоб уточнити: | ||
+ | |||
+ | Вибір одного рядка | ||
+ | |||
+ | < | ||
+ | my %p = Db-> | ||
+ | Show %p? " | ||
+ | </ | ||
+ | |||
+ | Вибірка кількох рядків | ||
+ | |||
+ | < | ||
+ | my $db = Db-> | ||
+ | while( my %p = $db-> | ||
+ | { | ||
+ | Show " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Вибір декількох рядків з іншим форматом виклику | ||
+ | |||
+ | < | ||
+ | my $db = Db->sql( | ||
+ | sql => " | ||
+ | param => [ $filed, $val ], | ||
+ | | ||
+ | ); | ||
+ | while( my %p = $db-> | ||
+ | </ | ||
+ | |||
+ | UPDATE/ | ||
+ | |||
+ | < | ||
+ | my $rows = Db-> | ||
+ | $rows>0 or Error(' | ||
+ | </ | ||
+ | |||
+ | Виконання кількох запитів у транзакції | ||
+ | |||
+ | < | ||
+ | Db-> do_all ( | ||
+ | | ||
+ | | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | Перевіряється, | ||
+ | |||
+ | Додаткові методи | ||
+ | |||
+ | * disconnect - розриває з' | ||
+ | * connect - здійснює з' | ||
+ | * begin_work - старт транзакції | ||
+ | * commit - коміт транзакції | ||
+ | * rollback - відкат транзакції | ||
+ | * ok - чи був успішний останній виконаний sql | ||
+ | * rows - рядків торкнувся останній виконаний sql | ||
+ | * filtr - екранування небезпечних символів sql |