Це стара версія документу!
Зміст
API Astral
Набір wf_*-хелперів для генерації типових форм, таблиць та іншого UI в Ubilling.
Використання не обов'язкове, але має на меті уніфікацію інтерфейсу кінцевого користувача і поліпшення читабельності коду.
Усі $label / $title / $legend (де зазначено) автоматично проходять через __().
HTML збирається конкатенацією рядків, далі зазвичай show_window($title, $html).
Базовий патерн
$tariffParams=array('tariff1'=>'Tariff1'); $inputs = wf_TextInput('newname', __('Name'), '', true, '20'); $inputs .= wf_Selector('tariff', $tariffParams, __('Tariff'), '', true); $inputs .= wf_Submit(__('Save')); $form = wf_Form('', 'POST', $inputs, 'glamour'); show_window(__('Create'), $form);
Типові CSS-класи: glamour (форми), ubButton (кнопки-посилання), row1 / row5 (рядки таблиць).
Параметр $br = true додає <br> після елемента.
Форми та поля
| Функція | Призначення |
|---|---|
wf_Form($action, $method, $inputs, $class, $legend, …) | Обгортка <form> |
wf_TextInput($name, $label, $value, $br, $size, $pattern, …) | Текстове поле (+ HTML5-патерни) |
wf_PasswordInput / wf_PasswordInputRaw | Пароль (з show/hide або без) |
wf_TextArea($name, $label, $value, $br, $size) | Textarea; $size як “20×4” |
wf_CheckInput / wf_RadioInput | Checkbox / radio |
wf_HiddenInput | Hidden |
wf_Submit / wf_SubmitClassed | Submit (input / button) |
wf_Trigger | Yes/No select (1/0) |
wf_SliderInput | HTML5 range |
wf_ColorInput / wf_ColPicker | Колір (native / jQuery) |
wf_AutocompleteTextInput | Autocomplete |
wf_FormDisabler | Захист від подвійного POST |
Патерни wf_TextInput
Шостий аргумент $pattern - готовий ключ HTML5-валідації (додає pattern, placeholder, локалізований title).
Можна також передати сирий рядок на кшталт pattern=“…”.
| Ключ | Що приймає | Приклад |
|---|---|---|
alpha | Лише латиниця | abcDEF |
alphanumeric | Латиниця + цифри | abc123 |
digits | Лише цифри | 12345 |
sigint | Ціле зі знаком | -123, 456 |
digits-comma-list | Список цифр через кому (без коми на краях) | 1,2,10 |
finance | Число з опційною крапкою | 100, 4.01 |
sigfinance | Те саме зі знаком | -123.45, 0.99 |
float | Float | 123.45, 0.001 |
sigfloat | Float зі знаком | -1.5, 0.001 |
email | user@domain.com |
|
login | Логін: латиниця, цифри, _ | user_123 |
ip | IPv4 (допускає 0.0.0.0) | 192.168.1.1 |
net-cidr | CIDR; маска /31 заборонена | 192.168.1.0/24 |
mac | MAC через : або - | 00:1A:2B:3C:4D:5E |
mobile | Телефон, код країни опційний | +380501234567 |
geo | Координати lat,lng | 40.714,-74.005 |
url | HTTP/HTTPS URL з опційним портом | http://host.domain:8080 |
ipurl | URL з доменом або IPv4 | http://192.168.1.1/ |
pathorurl | Шлях або URL | some/dir/, http://x/ |
filepath | Відносний/абсолютний шлях до файлу | dir/file.txt |
dirpath | Шлях до каталогу | some/dir/ |
fullpath | Лише абсолютний Unix-шлях (з /) | /var/www/html |
$inputs .= wf_TextInput('summ', __('Sum'), '', true, '15', 'sigfinance'); $inputs .= wf_TextInput('login', __('Login'), '', true, '15', 'login'); $inputs .= wf_TextInput('ip', __('IP'), '', true, '15', 'ip');
Селектори
| Функція | Призначення |
|---|---|
wf_Selector($name, $params, $label, $selected, $br, …) | Звичайний <select> ($params = value ⇒ title) |
wf_SelectorAC | Auto-submit при зміні |
wf_AjaxSelectorAC($container, $params, …) | Ajax-завантаження в контейнер (ключі = URL) |
wf_SelectorSearchable / …AC / wf_AjaxSelectorSearchableAC | Select2 з пошуком |
wf_MonthSelector / wf_YearSelector / wf_YearSelectorPreset | Місяць / рік |
wf_JuiComboBox | jQuery UI combobox |
Значення опцій селектора не локалізуються автоматично - передавайте вже готові рядки.
Таблиці
Класичний ручний збір:
$cells = wf_TableCell(__('Name')); $cells .= wf_TableCell(__('Actions')); $rows = wf_TableRow($cells, 'row1'); foreach ($items as $item) { $cells = wf_TableCell($item['name']); $cells .= wf_TableCell(wf_Link('?module=x&edit=' . $item['id'], web_edit_icon())); $rows .= wf_TableRow($cells, 'row5'); } show_window(__('List'), wf_TableBody($rows, '100%', 0, 'sortable'));
| Функція | Призначення |
|---|---|
wf_TableCell($data, $width, $class, $customkey, $colspan, $rowspan) | <td> |
wf_TableRow / wf_TableRowStyled | <tr> |
wf_TableBody($rows, $width, $border, $class, $options) | <table> |
wf_pagination(…) | Пагінатор |
DataTables (JQDT)
Для великих списків - jQuery DataTables:
wf_JqDtEmbed($columns, $dataArr, …)- дані вже на сторінціwf_JqDtLoader($columns, $ajaxUrl, …)- JSON з ajax-URL- клас
wf_JqDtHelper- збір JSON на сервері (addRow/getJson)
Embed (дані на сторінці)
$dataArr - масив рядків, кожен рядок - масив комірок у тому ж порядку, що й $columns:
$columns = array('Location', 'IP', 'Model', 'Actions'); $dataArr = array(); foreach ($items as $io => $each) { $dataArr[] = array( $each['location'], $each['ip'], $each['model'], wf_Link('?module=x&edit=' . $each['id'], web_edit_icon()) ); } $opts = '"order": [[ 0, "desc" ]]'; show_window(__('List'), wf_JqDtEmbed($columns, $dataArr, false, 'Items', 50, $opts));
Loader (ajax JSON)
// ajax-гілка модуля $json = new wf_JqDtHelper(); $json->addRow(array($id, $name, $actions)); $json->getJson(); // die з JSON // сторінка $columns = array('ID', 'Name', 'Actions'); show_window(__('List'), wf_JqDtLoader($columns, '?module=foo&ajax=true', false, 'Items', 50));
Допоміжні: wf_JQDTRefreshButton, wf_JQDTColumnHideShow, wf_JQDTMarkRowJS, wf_JQDTDetailsClickProcessingJS тощо.
Посилання та навігація
| Функція | Призначення |
|---|---|
wf_Link($url, $title, $br, $class, $options) | Звичайне посилання |
wf_AjaxLink($url, $title, $container, …) | goajax у контейнер |
wf_BackLink / wf_BackLinkAuto | Кнопка “Назад” |
wf_GenBackUrl($url) | &backurl= (base64) |
wf_img / wf_img_sized | <img> |
Модалки та підтвердження
| Функція | Призначення |
|---|---|
wf_modal / wf_modalAuto | Діалог за кліком (фіксований / авто-розмір) |
wf_modalOpened / wf_modalOpenedAuto | Відкрити одразу |
wf_modalAutoForm | Модалка без opener (для ajax-відповіді) |
wf_ConfirmDialog / wf_ConfirmDialogJS | Підтвердження (перехід / JS-колбеки) |
wf_JSAlert / wf_JSAlertStyled | Нативний confirm() |
$btn = wf_modalAuto(web_icon_create() . ' ' . __('Create'), __('Create'), $createForm, 'ubButton'); $del = wf_ConfirmDialog( '?module=x&delete=' . $id, web_delete_icon(), __('Removing this may lead to irreparable results'), '', '?module=x', __('Delete') . '?' );
Ajax-відповідь модалкою:
die(wf_modalAutoForm(__('Edit'), $editFormHtml, $modalWid, $modalWbid, true));
Ajax
// на сторінці $result = wf_AjaxLoader(); // один раз, якщо ще немає $result .= wf_AjaxLink('?module=report&aj=top', __('Process'), 'mybox', false, 'ubButton'); $result .= wf_delimiter(); $result .= wf_AjaxContainer('mybox', '', $defaultHtml); show_window(__('Report'), $result); // ajax-гілка die($renderedContent);
Складніші сценарії (модалка з форми, сабміт у JQDT): wf_JSAjaxModalOpener, wf_jsAjaxDynamicWindowButton, wf_jsAjaxFormSubmit, wf_jsAjaxCustomFunc, wf_jsAjaxFilterFormSubmit.
Дати та час
| Функція | Призначення |
|---|---|
wf_DatePicker / wf_DatePickerPreset | Вибір дати |
wf_TimePickerPreset / wf_TimePickerPresetSeconds | Час |
wf_DatesTimesRangeFilter(…) | Готовий блок «від - до» |
wf_FullCalendar | Календар подій |
Розмітка
| Функція | Призначення |
|---|---|
wf_tag($tag, $closed, $class, $options) | Довільний HTML-тег |
wf_delimiter / wf_nbsp / wf_CleanDiv | Відступи / clear |
wf_Plate | Плитка-блок |
wf_FlexContentGrid($items, $inRow) | Flex-сітка |
wf_TabsGen | Вкладки |
wf_Spoiler / wf_ShowHide | Згортання контенту |
Графіки та віджети
| Функція | Для чого |
|---|---|
wf_Graph($data, …) | Лінійний графік (Dygraphs) з CSV-рядка в PHP |
wf_GraphCSV($datafile, …) | Те саме, але дані з CSV-файлу |
wf_gcharts3DPie($params, …) | Google 3D pie: label ⇒ count |
wf_gchartsLine($params, …) | Google line chart (масив рядків даних) |
wf_gchartsLineZeroIsBad($params, …) | Як line, але нулі не «ламають» шкалу/серії |
wf_genColorCodeFromText($text, $palette) | Детермінований hex-колір з тексту (для легенд/серій) |
wf_renderGauge($value, $title, $units, …) | Стрілковий gauge (довільні одиниці) |
wf_renderTemperature($temp, …) | Gauge температури (°C, готові зони green/yellow/red) |
wf_StepsMeter($params, $current) | Візуальний прогрес по кроках/етапах |
wf_doSound($url) | Програти аудіофайл у браузері |
Службові
| Функція | Призначення |
|---|---|
wf_InputId() | Випадковий id елемента |
wf_CheckPost($keys) / wf_CheckGet($keys) | Усі ключі присутні і непорожні (0 = порожнє) - є застарілими, використовуйте ubRouting |
wf_getBoolFromVar | Приведення до bool (з рядків true/false) |
wf_emptyNonZero | Порожнє, але не 0 / “0” |
Нотатки
- Astral повертає HTML-рядок - сам нічого не виводить (окрім
wf_JqDtHelper::getJson(), який робитьdie). - Для ajax-гілок модуля типово: перевірити параметр → зібрати відповідь →
die(…). wf_AjaxLinkне локалізує title (на відміну відwf_Link) - передавайте вже__().- Повний перелік сигнатур - у docblock самих функцій; тут - карта можливостей і типові патерни.
