FXML — различия между версиями
Mentos (обсуждение | вклад) (Метка: visualeditor) |
(→menu - контекстное меню элемента: кавычки после playlist_url) |
||
(не показано 9 промежуточных версий 2 участников) | |||
Строка 17: | Строка 17: | ||
и FXML CMS | и FXML CMS | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | ==Глобальные теги== | ||
+ | $_PL["typeList"]="start"; // Плиточный + другой(с использованием $_CH["position"] ) виды страницы | ||
+ | |||
+ | $_PL["cacheinfo"]="nocache"; // Не кешировать страницу (при возврате назад страница будет грузиться заново по адресу) | ||
+ | |||
+ | $_PL["setcookie"]["name1"]="value1"; // Аналог cookie вебсайтов. Запомнит для последующих запросов страниц с этого же домена в переменной $_GET["cookie"]["name1"] значение value1 | ||
+ | |||
+ | $_PL["info"]="Вам уведомление"; // Показывает alert "Вам уведомление" с кнопкой ОК (закрыть) | ||
+ | |||
+ | $_PL["confirm"]=["title"=>"Открыть вложенный CHannel?","channel"=>["playlist_url"=>"http://.."]]; | ||
+ | |||
+ | === style - css стили оформления страницы === | ||
+ | Стиль по id | ||
+ | |||
+ | Глобальные id страницы | ||
+ | |||
+ | ==== ["site"] - ваша страница, например можно задать фон, цвет, шрифт, позицию ==== | ||
+ | на месте background укажите любое CSS свойство (нужно в JS формате, дефис заменяется на прописную, например background-color это backgroundColor) | ||
+ | |||
+ | $_PL["style"]["cssid"]["site"]["background"]="gray url(https://s-img.mgid.com/g/7025179/200x200/147x0x761x761/aHR0cDovL2ltZ2hvc3RzLmNvbS90LzQyOTUxMy84YWFmMzMxMDYzMmVjYWNlMDJkYTNmZDE4MTU0NmZjNS5qcGVn.webp?v=1601909376-iOALyp51NSSBuaX6d2HD_GWz6iKZjHHVfBYJHelY2rs)"; | ||
+ | |||
+ | $_PL["style"]["cssid"]["site"]["fontFamily"]="Roboto, Helvetica, sans-serif"; | ||
+ | |||
+ | ==== ["channels"]["parent"] - элемент списка, разные стили при выделении и по умолчании ==== | ||
+ | задать красный цвет фона при выделении | ||
+ | |||
+ | $_PL["style"]["channels"]["parent"]["selected"]["backgroundColor"]="red "; | ||
+ | |||
+ | задать серый цвет фона не выделенных элементов | ||
+ | |||
+ | $_PL["style"]["channels"]["parent"]["default"]["backgroundColor"]="gray"; | ||
+ | <br /> | ||
+ | |||
+ | ===cmd тег (как глобальный так и в playlist_url) - допустимые команды=== | ||
+ | |||
+ | ====Примеры использования '''cmd''' в глобальном теге==== | ||
+ | $_PL["cmd"]="historyback(1);" // Вернуться назад на 1 страницу | ||
+ | |||
+ | $_PL["cmd"]="info(Вам уведомление);" // Показывает alert "Вам уведомление" с кнопкой ОК (закрыть) | ||
+ | |||
+ | $_PL["cmd"]="settitle(2, Новый заголовок);" // элементу 2 дать новый title | ||
+ | |||
+ | $_PL["cmd"]="setdescription(2, Новый заголовок);" // элементу 2 дать новый description | ||
+ | |||
+ | $_PL["cmd"]="reload(2);" // Перезагрузить страницу через 2секунды | ||
+ | |||
+ | В конец cmd к командам выше можно добавить '''stop();''' чтобы выполнить команду выше и остановить загрузку новой страницы | ||
+ | |||
+ | например $_PL["cmd"]="info(Доступ к этой странице Вам запрещен);stop();" выведет уведомление но оставить пользователя на предыдущей странице. | ||
+ | |||
+ | ====Примеры использования '''cmd''' в $_CH["playlist_url"]==== | ||
+ | $_CH["playlist_url"]="cmd:<Команда из списка допустимых>"; | ||
+ | |||
+ | Например $_CH["playlist_url"]="reload();"; перезагрузит страницу при нажатии | ||
+ | |||
+ | ==Channel теги== | ||
+ | |||
+ | ===title=== | ||
+ | Заголовок | ||
+ | |||
+ | ===playlist_url или stream_url=== | ||
+ | Адрес страницы или адрес видеопотока (непустым может быть только один из этих тегов) | ||
+ | |||
+ | ===logo_30x30=== | ||
+ | Адрес иконки | ||
+ | |||
+ | ===menu - контекстное меню элемента=== | ||
+ | $menu=[]; | ||
+ | |||
+ | $menu[0]=["title"=>"Контекстное меню1","playlist_url"=>"http..."]; // Аналог обычного $_CH | ||
+ | |||
+ | $menu[0]=["title"=>"Контекстное меню2","playlist_url"=>"http..."]; // Аналог обычного $_CH | ||
+ | |||
+ | $_CH["menu"]=$menu; | ||
+ | |||
+ | ===position=== | ||
+ | $_CH["position"]="fulleditline"; //- Поле ввода текста шириной почти на всю страницу | ||
+ | |||
+ | $_CH["position"]="hlist"; // - горизонтальная ссылка (может быть несколько на одном горизонтальном уровне) | ||
+ | |||
+ | $_CH["position"]="list"; // -обычный вид списка шириной в половину экрана и с description справа | ||
+ | |||
+ | $_CH["position"]="label"; // -невысокая строка на всю ширину экрана | ||
+ | |||
+ | $_CH["position"]="bigtile"; // - Плитка увеличенной в 2 раза высоты (128х215px) | ||
+ | |||
+ | $_CH["position"]=""; // - Плитка обычного размера как в Стартовом меню (128х101px) | ||
+ | |||
+ | ===location=== | ||
+ | $_CH["location"]=1; // Переход c заменой текущей ссылки окна на новую (при перезапуске форкплеера будет открываться уже с этой новой ссылки) | ||
+ | |||
+ | $_CH["location"]=3; // Переход с отображением в текущем окне (при перезапуске форкплеера будет открываться старая ссылка и опять переадресовываться, необходимо если например используются устаревающие сессии) | ||
+ | |||
+ | ===after и before - свой html код после и перед элементом списка=== | ||
+ | $_CH["before"]="<nowiki><div style='color:red;'>Текст перед элементом</div></nowiki>"; | ||
+ | |||
+ | $_CH["after"]="<nowiki><div style='color:red;'>Текст после элемента</div></nowiki>"; | ||
+ | |||
+ | ===SetTimeInterval - отправка событий клиентом через интервал и вывод сообщений=== | ||
+ | $_CH["SetTimeInterval"]=["time"=>1,"onmenu"=>"<nowiki>http://19onmenu</nowiki>","onplay"=>"<nowiki>http://19onplay</nowiki>"]; | ||
+ | |||
+ | '''time''' - интервал между отправкой событий в минутах | ||
+ | |||
+ | '''onmenu -''' ссылка для отправки событий если пользователь находится в списке | ||
+ | |||
+ | в ответ по ссылке onmenu <nowiki>http://193.30.240.2/try/ajax/send_status_log.php?action=onmenu</nowiki> можно давать json | ||
+ | {"message":"Hello user"} | ||
+ | Это уведомление будет выводится вверху форкплеера | ||
+ | |||
+ | '''onplay-''' ссылка для отправки событий если пользователь смотрит видео | ||
+ | |||
+ | Можно использовать один или два сразу тега onmenu и onplay | ||
+ | |||
+ | ===parser - тег загрузки другой страницы перед переходом по playlist_url или stream_url=== | ||
+ | Пример в XML | ||
+ | <parser><![CDATA<nowiki>[http://www.youtube.com/watch?v=qZ3xj_UF4I8|js=|;]</nowiki>]></parser> | ||
+ | Пример в JSON FXML | ||
+ | $_CH["parser"]="<nowiki>http://www.youtube.com/watch?v=qZ3xj_UF4I8|js=|</nowiki>;"; | ||
+ | результат отдастся то что между js= и ; | ||
+ | |||
+ | Регулярное выражение (по маркеру .*? ) | ||
+ | <parser><![CDATA<nowiki>[http://www.youtube.com/watch?v=qZ3xj_UF4I8|<script>.*?js=|;]</nowiki>]></parser> | ||
+ | или | ||
+ | <parser><![CDATA<nowiki>[http://www.youtube.com/watch?v=qZ3xj_UF4I8|js=|.*?js]</nowiki>]></parser> | ||
+ | преобразуется в RegExp("<script>.*?js=(.*?);","i") - результат отдастся тот что в () | ||
+ | |||
+ | <channel> | ||
+ | |||
+ | <title>Test </title> | ||
+ | |||
+ | <playlist_url><![CDATA<nowiki>[http://parser.co/?page=postmd5]</nowiki>]></playlist_url> | ||
+ | |||
+ | <parser><![CDATA<nowiki>[http://www.youtube.com/watch?v=qZ3xj_UF4I8]</nowiki>]></parser> | ||
+ | |||
+ | </channel> | ||
+ | |||
+ | Результат будет в $_POST['postmd5'] | ||
+ | |||
+ | Можно так преобразовывать чтоб не путаться | ||
+ | foreach ($_GET as $key => $value) { | ||
+ | |||
+ | if($value=="postmd5") $_GET[$key]=$_POST['postmd5']; | ||
+ | |||
+ | } | ||
+ | Результат будет аналогично md5hash в $_GET['page'] | ||
+ | |||
+ | ====Методом POST для видеоссылок ( stream_url )==== | ||
+ | <code><channel> </code> | ||
+ | |||
+ | <code><title>stream post</title></code> | ||
+ | |||
+ | <code><stream_url><![CDATA<nowiki>[http://test.ru/index.php?s=postmd5]</nowiki>]></stream_url></code> | ||
+ | |||
+ | <code><parser><![CDATA<nowiki>[https://yadi.sk/d/0BpgziSQ0VWiFg]</nowiki>]></parser></code> | ||
+ | |||
+ | <code></channel></code> | ||
+ | |||
+ | Будет идти отправка POST на <nowiki>http://test.ru/index.php?s=postmd5</nowiki> в $_POST["postmd5"] | ||
+ | |||
+ | Ответ страницы попадет в проигрыватель в виде ссылки. | ||
+ | |||
+ | Тоесть <code><nowiki>http://test.ru/index.php?s=postmd5</nowiki></code> должен дать текст ссылки на медиафайл вида <nowiki>http://.../myvideo.mp4</nowiki> | ||
+ | |||
+ | ====Скачивание сторонней страницы по необходимости, страница <nowiki>http://parser.co/</nowiki> может дать json ответ==== | ||
+ | {"parse":"<nowiki>http://www.youtube.com/watch?v=qZ3xj_UF4I8&gl=US&hl=en&has_verified=1&bpctr=9999999999</nowiki>"} | ||
+ | Скачанная страница шлется в параметре $_POST['remoteparse'] | ||
+ | |||
+ | ==Вывод результирующей страницы (на PHP)== | ||
+ | <?php | ||
+ | |||
+ | // Ваш код с наполнением массивов $_PL и $_CH информацией | ||
+ | |||
+ | $_PL["channels"]=$_CH; | ||
+ | |||
+ | print json_encode($_PL); | ||
+ | |||
+ | ?> | ||
+ | <br /> |
Версия 15:26, 28 декабря 2020
FXML (Fork eXtensible Markup Language) — язык разметки документов во Всемирной паутине. Для навигации по таким страницам не требуется мышь или сенсорный экран. Язык FXML интерпретируется такими приложениями как ForkPlayer, OTT Player, OTT-play. Полученный в результате интерпретации форматированный текст отображается на экране телевизора.
Например, следующий код (должен быть валидным JSON):
{"title":"COOLTV - портал нового поколения","background-image":"http://cooltv.info/img/tvcool.jpg","typeList":"start","icon":"http://cooltv.info/img/tvcool23.jpg","channels":[{"title":"Вход","logo_30x30":"http://cooltv.info/img/profle22.jpg","playlist_url":"http://cooltv.info/auth"},{"title":"Новости ","logo_30x30":"http://cooltv.info/img/rss-96.png","playlist_url":"http://cooltv.info/news"},{"title":"Поиск ","logo_30x30":"http://cooltv.info/img/icons8-search-folder-96.png","playlist_url":"http://cooltv.info/media/search.php"},{"title":"Кинозал ","logo_30x30":"http://cooltv.info/img/1icons8-film-reel-96.png","playlist_url":"http://cooltv.info/media"},{"title":"AceStream ","logo_30x30":"http://cooltv.info/img/icons8-wave-arrows-96.png","playlist_url":"http://cooltv.info/vdt/12"},{"title":"Обменник ","logo_30x30":"http://cooltv.info/img/icons8-next-100.png","playlist_url":"http://cooltv.info/media/obmen/"},{"title":"Сервисы ","logo_30x30":"http://cooltv.info/img/icons8s3-96.png","playlist_url":"http://cooltv.info/vdt/9"},{"title":"IPTV ","logo_30x30":"http://cooltv.info/img/icons8-hdtv-96.png","playlist_url":"http://cooltv.info/vdt/8"},{"title":"Мультимедиа ","logo_30x30":"http://cooltv.info/img/icons8-documentary-96.png","playlist_url":"http://cooltv.info/vdt/7"},{"title":"Чат ","logo_30x30":"http://cooltv.info/img/icons8-chat-96.png","playlist_url":"http://cooltv.info/guest"},{"title":"FAQ ","logo_30x30":"http://cooltv.info/img/icons8-info-popup-96.png","playlist_url":"http://cooltv.info/faq/"},{"title":"Копилка","logo_30x30":"http://cooltv.info/img/icons8-bad-piggies-96.png","playlist_url":"http://cooltv.info/copilka"}]}
даст такой результат (в ForkPlayer):
Все допустимые команды можно посмотреть в исходном коде страниц
https://github.com/alexkdpu/kino.pub_forkplayerPHP/blob/master/index.php
Смотреть Исходный код любой страницы можно непосредственно в ForkPlayer
и FXML CMS
Содержание
- 1 Глобальные теги
- 2 Channel теги
- 2.1 title
- 2.2 playlist_url или stream_url
- 2.3 logo_30x30
- 2.4 menu - контекстное меню элемента
- 2.5 position
- 2.6 location
- 2.7 after и before - свой html код после и перед элементом списка
- 2.8 SetTimeInterval - отправка событий клиентом через интервал и вывод сообщений
- 2.9 parser - тег загрузки другой страницы перед переходом по playlist_url или stream_url
- 3 Вывод результирующей страницы (на PHP)
Глобальные теги
$_PL["typeList"]="start"; // Плиточный + другой(с использованием $_CH["position"] ) виды страницы
$_PL["cacheinfo"]="nocache"; // Не кешировать страницу (при возврате назад страница будет грузиться заново по адресу)
$_PL["setcookie"]["name1"]="value1"; // Аналог cookie вебсайтов. Запомнит для последующих запросов страниц с этого же домена в переменной $_GET["cookie"]["name1"] значение value1
$_PL["info"]="Вам уведомление"; // Показывает alert "Вам уведомление" с кнопкой ОК (закрыть)
$_PL["confirm"]=["title"=>"Открыть вложенный CHannel?","channel"=>["playlist_url"=>"http://.."]];
style - css стили оформления страницы
Стиль по id
Глобальные id страницы
["site"] - ваша страница, например можно задать фон, цвет, шрифт, позицию
на месте background укажите любое CSS свойство (нужно в JS формате, дефис заменяется на прописную, например background-color это backgroundColor)
$_PL["style"]["cssid"]["site"]["background"]="gray url(https://s-img.mgid.com/g/7025179/200x200/147x0x761x761/aHR0cDovL2ltZ2hvc3RzLmNvbS90LzQyOTUxMy84YWFmMzMxMDYzMmVjYWNlMDJkYTNmZDE4MTU0NmZjNS5qcGVn.webp?v=1601909376-iOALyp51NSSBuaX6d2HD_GWz6iKZjHHVfBYJHelY2rs)";
$_PL["style"]["cssid"]["site"]["fontFamily"]="Roboto, Helvetica, sans-serif";
["channels"]["parent"] - элемент списка, разные стили при выделении и по умолчании
задать красный цвет фона при выделении
$_PL["style"]["channels"]["parent"]["selected"]["backgroundColor"]="red ";
задать серый цвет фона не выделенных элементов
$_PL["style"]["channels"]["parent"]["default"]["backgroundColor"]="gray";
cmd тег (как глобальный так и в playlist_url) - допустимые команды
Примеры использования cmd в глобальном теге
$_PL["cmd"]="historyback(1);" // Вернуться назад на 1 страницу
$_PL["cmd"]="info(Вам уведомление);" // Показывает alert "Вам уведомление" с кнопкой ОК (закрыть)
$_PL["cmd"]="settitle(2, Новый заголовок);" // элементу 2 дать новый title
$_PL["cmd"]="setdescription(2, Новый заголовок);" // элементу 2 дать новый description
$_PL["cmd"]="reload(2);" // Перезагрузить страницу через 2секунды
В конец cmd к командам выше можно добавить stop(); чтобы выполнить команду выше и остановить загрузку новой страницы
например $_PL["cmd"]="info(Доступ к этой странице Вам запрещен);stop();" выведет уведомление но оставить пользователя на предыдущей странице.
Примеры использования cmd в $_CH["playlist_url"]
$_CH["playlist_url"]="cmd:<Команда из списка допустимых>";
Например $_CH["playlist_url"]="reload();"; перезагрузит страницу при нажатии
Channel теги
title
Заголовок
playlist_url или stream_url
Адрес страницы или адрес видеопотока (непустым может быть только один из этих тегов)
logo_30x30
Адрес иконки
$menu=[];
$menu[0]=["title"=>"Контекстное меню1","playlist_url"=>"http..."]; // Аналог обычного $_CH
$menu[0]=["title"=>"Контекстное меню2","playlist_url"=>"http..."]; // Аналог обычного $_CH
$_CH["menu"]=$menu;
position
$_CH["position"]="fulleditline"; //- Поле ввода текста шириной почти на всю страницу
$_CH["position"]="hlist"; // - горизонтальная ссылка (может быть несколько на одном горизонтальном уровне)
$_CH["position"]="list"; // -обычный вид списка шириной в половину экрана и с description справа
$_CH["position"]="label"; // -невысокая строка на всю ширину экрана
$_CH["position"]="bigtile"; // - Плитка увеличенной в 2 раза высоты (128х215px)
$_CH["position"]=""; // - Плитка обычного размера как в Стартовом меню (128х101px)
location
$_CH["location"]=1; // Переход c заменой текущей ссылки окна на новую (при перезапуске форкплеера будет открываться уже с этой новой ссылки)
$_CH["location"]=3; // Переход с отображением в текущем окне (при перезапуске форкплеера будет открываться старая ссылка и опять переадресовываться, необходимо если например используются устаревающие сессии)
after и before - свой html код после и перед элементом списка
$_CH["before"]="<div style='color:red;'>Текст перед элементом</div>";
$_CH["after"]="<div style='color:red;'>Текст после элемента</div>";
SetTimeInterval - отправка событий клиентом через интервал и вывод сообщений
$_CH["SetTimeInterval"]=["time"=>1,"onmenu"=>"http://19onmenu","onplay"=>"http://19onplay"];
time - интервал между отправкой событий в минутах
onmenu - ссылка для отправки событий если пользователь находится в списке
в ответ по ссылке onmenu http://193.30.240.2/try/ajax/send_status_log.php?action=onmenu можно давать json
{"message":"Hello user"}
Это уведомление будет выводится вверху форкплеера
onplay- ссылка для отправки событий если пользователь смотрит видео
Можно использовать один или два сразу тега onmenu и onplay
parser - тег загрузки другой страницы перед переходом по playlist_url или stream_url
Пример в XML
<parser><![CDATA[http://www.youtube.com/watch?v=qZ3xj_UF4I8|js=|;]]></parser>
Пример в JSON FXML
$_CH["parser"]="http://www.youtube.com/watch?v=qZ3xj_UF4I8|js=|;";
результат отдастся то что между js= и ;
Регулярное выражение (по маркеру .*? )
<parser><![CDATA[http://www.youtube.com/watch?v=qZ3xj_UF4I8|<script>.*?js=|;]]></parser>
или
<parser><![CDATA[http://www.youtube.com/watch?v=qZ3xj_UF4I8|js=|.*?js]]></parser>
преобразуется в RegExp("<script>.*?js=(.*?);","i") - результат отдастся тот что в ()
<channel>
<title>Test </title>
<playlist_url><![CDATA[http://parser.co/?page=postmd5]]></playlist_url>
<parser><![CDATA[http://www.youtube.com/watch?v=qZ3xj_UF4I8]]></parser>
</channel>
Результат будет в $_POST['postmd5']
Можно так преобразовывать чтоб не путаться
foreach ($_GET as $key => $value) {
if($value=="postmd5") $_GET[$key]=$_POST['postmd5'];
}
Результат будет аналогично md5hash в $_GET['page']
Методом POST для видеоссылок ( stream_url )
<channel>
<title>stream post</title>
<stream_url><![CDATA[http://test.ru/index.php?s=postmd5]]></stream_url>
<parser><![CDATA[https://yadi.sk/d/0BpgziSQ0VWiFg]]></parser>
</channel>
Будет идти отправка POST на http://test.ru/index.php?s=postmd5 в $_POST["postmd5"]
Ответ страницы попадет в проигрыватель в виде ссылки.
Тоесть http://test.ru/index.php?s=postmd5
должен дать текст ссылки на медиафайл вида http://.../myvideo.mp4
Скачивание сторонней страницы по необходимости, страница http://parser.co/ может дать json ответ
{"parse":"http://www.youtube.com/watch?v=qZ3xj_UF4I8&gl=US&hl=en&has_verified=1&bpctr=9999999999"}
Скачанная страница шлется в параметре $_POST['remoteparse']
Вывод результирующей страницы (на PHP)
<?php
// Ваш код с наполнением массивов $_PL и $_CH информацией
$_PL["channels"]=$_CH;
print json_encode($_PL);
?>