Користувальницькі налаштування

Налаштування сайту


apiastral

Це стара версія документу!


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 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 самих функцій; тут - карта можливостей і типові патерни.
apiastral.1794696573.txt.gz · Востаннє змінено: повз nightfly

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki