diff --git a/data/y-web/Makefile.am b/data/y-web/Makefile.am
index ab3212e7b..4eeba8c64 100644
--- a/data/y-web/Makefile.am
+++ b/data/y-web/Makefile.am
@@ -76,6 +76,9 @@ install_DATA = extensions.txt \
Y_Tools_Menue.yhtm \
Y_Tools_m3uConvert.yhtm \
Y_Tools_m3uConvert_help.yhtm \
+ Y_Tools_NetFS.yhtm \
+ Y_Tools_NetFS_edit.yhtm \
+ Y_Tools_NetFS_init.yhtm \
Y_Tools_Rcsim.yhtm \
Y_Tools_Screenshot.yhtm \
Y_Tools_Screenshot_GraphLCD.yhtm \
@@ -85,11 +88,6 @@ install_DATA = extensions.txt \
Y_Wait.yhtm \
Y_yWeb.js
-# NI-yWeb
-install_DATA += Y_NI_NetFS-control.yhtm \
- Y_NI_NetFS-edit.yhtm \
- Y_NI_NetFS-init.yhtm
-
install-data-hook:
@# Badass hack, I know. If anyone knows a better way -- please send patch!
find $(DESTDIR)$(PRIVATE_HTTPDDIR)/ -type f -print0 | xargs --no-run-if-empty -0 \
diff --git a/data/y-web/Y_Blocks.txt b/data/y-web/Y_Blocks.txt
index 99a197b42..348d7b09a 100644
--- a/data/y-web/Y_Blocks.txt
+++ b/data/y-web/Y_Blocks.txt
@@ -521,18 +521,18 @@ start-block~netfs_table_row
{=var-get:local_dir_{=var-get:nr=}=}
-
+
{=if-equal:{=mount_type=}~0~
{=if-equal:{=var-get:is_mount_{=var-get:nr=}=}~false~
-
+
~
-
+
=}
diff --git a/data/y-web/Y_EPG.js.jQuery b/data/y-web/Y_EPG.js.jQuery
new file mode 100644
index 000000000..8b62433f0
--- /dev/null
+++ b/data/y-web/Y_EPG.js.jQuery
@@ -0,0 +1,302 @@
+/* yWeb EPG by yjogol
+*/
+
+/* EPG+ */
+
+var g_width_px = 0; /* display width */
+var g_number_of_cols = 0; /* nr of cols */
+var g_width_all_items = 0; /* width without bouquet */
+var c_width_px_per_min = 3; /* px per minute */
+var c_min_per_col = 15; /* minutes per col */
+var c_width_px_bouquet = 100; /* width of bouquet */
+var c_slider_width = 25;
+var epg_data; /* all EPG Data in 2-dim Array */
+var epg_data_index = 0;
+var g_timer_eventids = new Array();
+var g_selected = 0;
+
+/* calc the dimension px and mins to display */
+function epg_plus_calc_dimensions()
+{
+ var show_dim = jQuery('#epg_plus').outerWidth();
+ var usable_width_px = show_dim.width - c_slider_width; /*get display width*/
+ var max_minutes_to_display = Math.round((usable_width_px - c_width_px_bouquet - c_width_px_per_min) / c_width_px_per_min); /* calc display minutes*/
+ g_number_of_cols = Math.round(max_minutes_to_display / c_min_per_col);
+ g_width_px = g_number_of_cols * c_width_px_per_min * c_min_per_col + c_width_px_bouquet + c_width_px_per_min;
+ g_width_all_items = g_width_px - c_width_px_bouquet - c_width_px_per_min;
+ jQuery('#epg_plus').css('width', g_width_px);
+}
+
+function do_zap(channelid)
+{
+ stb_zapto(channelid);
+}
+
+function epg_zapto()
+{
+ stb_zapto(jQuery('#d_channel_id').text());
+}
+
+function epg_set_timer_rec()
+{
+ stb_set_timer_rec(jQuery("#d_channel_id").text(), jQuery("#d_start").text(), jQuery("#d_stop").text());
+}
+
+function epg_set_timer_zap()
+{
+ stb_set_timer_zap(jQuery("#d_channel_id").text(), jQuery("#d_start").text());
+}
+
+function build_epg_clear()
+{
+ var ep = jQuery("#epg_plus");
+ obj_clear_all_childs(ep);
+}
+
+/* set a layout box and content */
+function build_epg_setbox(_item, _starttime, _stoptime, _start, _stop)
+{
+ var d_start = Math.max(_start, _starttime);
+ var d_stop = Math.min(_stop, _stoptime);
+ var d_left = c_width_px_bouquet + c_width_px_per_min + Math.round((d_start - _starttime) * c_width_px_per_min / 60);
+ var d_width = Math.max(0, Math.round((d_stop - d_start) * c_width_px_per_min / 60) - 3);
+ d_width = Math.min(d_width, g_width_px - d_left);
+ if (d_start < _stoptime)
+ _item.css({
+ 'position': 'absolute',
+ 'top': '0px',
+ 'left': d_left + 'px',
+ 'width': d_width + 'px'
+ })
+}
+
+/* show epg details */
+function show_epg_item(_index)
+{
+ g_selected=_index;
+ jQuery("#d_desc").html(epg_data[_index][4] + " " + epg_data[_index][0]);
+ jQuery("#d_info1").html(epg_data[_index][1]);
+ jQuery("#d_info2").html(epg_data[_index][2]);
+ jQuery("#d_start").html(epg_data[_index][3]);
+ jQuery("#d_stop").html(epg_data[_index][5]);
+ jQuery("#d_channel_id").html(epg_data[_index][6]);
+ var logo = epg_data[_index][7];
+ jQuery("#d_logo").html((logo != "") ? " " : "");
+
+ var off= jQuery('#epg_plus').offset();
+ jQuery('#epg_info').css({
+ 'left': off.left + 50 + 'px',
+ 'top': off.top + 50 + 'px',
+ 'position': 'absolute'
+ });
+ show_obj("epg_info",true);
+}
+
+/* build one channel row */
+function build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime, _logo)
+{
+ var xml = loadSyncURLxml("/control/epg?xml=true&channelid=" + __channel_id + "&details=true&stoptime=" + _stoptime);
+ if (xml)
+ {
+ var prog_list = xml.getElementsByTagName('prog');
+ for (var i = 0; i < prog_list.length; i++)
+ {
+ var prog = prog_list[i];
+
+ var _stop = getXMLNodeItemValue(prog, "stop_sec");
+ _stop = parseInt(_stop);
+ if (_stop > _starttime)
+ {
+ var _start_t = getXMLNodeItemValue(prog, "start_t");
+ var _start = getXMLNodeItemValue(prog, "start_sec");
+ _start = parseInt(_start);
+ var _stop_t = getXMLNodeItemValue(prog, "stop_t");
+ var _desc = epg_de_qout(getXMLNodeItemValue(prog, "description"));
+ var _info1 = epg_de_qout(getXMLNodeItemValue(prog, "info1"));
+ var _info2 = epg_de_qout(getXMLNodeItemValue(prog, "info2"));
+ var __item = obj_createAt(__bdiv, "div", "ep_bouquet_item");
+
+ var epg_obj = new Array(_desc, _info1, _info2, _start, _start_t, _stop.toString(), __channel_id, _logo);
+ epg_data.push(epg_obj);
+ __item.innerHTML = "" + _desc + "";
+ build_epg_setbox(__item, _starttime, _stoptime, _start, _stop);
+ epg_data_index++;
+ }
+ }
+ /* look for timers*/
+ var fou = g_timer_eventids.findAll(function(e) {
+ return e.get('channelid') == __channel_id;
+ });
+ if (fou)
+ {
+ jQuery(fou).each(function(i, e) {
+ var stTime="0";
+ var tclass="";
+ if (e.get('eventType') == 3) /* zap */
+ {
+ stTime = e.get('alarmTime');
+ stTime = parseInt(stTime, 10) + 200;
+ stTime = stTime.toString();
+ tclass = "ep_bouquet_zap";
+ }
+ else if (e.get('eventType') == 5) /* record */
+ {
+ stTime = e.get('stopTime');
+ tclass = "ep_bouquet_rec";
+ }
+ var __item = obj_createAt(__bdiv, "div", tclass);
+ build_epg_setbox(__item, _starttime, _stoptime, e.get('alarmTime'), stTime);
+ });
+ }
+ }
+}
+
+/* build time row */
+function build_epg_time_bar(_tdiv, _starttime, _stoptime){
+ var _start = _starttime;
+ for (var i = 0; i < g_number_of_cols; i++)
+ {
+ var __item = obj_createAt(_tdiv, "div", "ep_time_bar_item");
+ __item.innerHTML = format_time(new Date(_start * 1000));
+ var _stop = _start + (c_min_per_col * 60);
+ build_epg_setbox(__item, _starttime, _stoptime, _start, _stop);
+ _start = _stop;
+ }
+}
+
+function get_timer()
+{
+ g_timer_eventids = new Array();
+ var timer = loadSyncURL("/control/timer?format=id");
+ var lines = timer.split("\n");
+ jQuery(lines).each(function(index, line) {
+ var vals = line.split(" ");
+ if (vals.length >= 8 && (vals[1] == 3 || vals[5])) /* record and zap */
+ {
+ var aTimer = $H( {
+ 'eventID': vals[0],
+ 'eventType': vals[1],
+ 'eventRepeat': vals[2],
+ 'repcount': vals[3],
+ 'announceTime': vals[4],
+ 'alarmTime': vals[5],
+ 'stopTime': vals[6],
+ 'channelid': vals[7]
+ });
+ g_timer_eventids.push(aTimer);
+ }
+ },this);
+}
+
+/* main */
+var g_i = 0;
+var g_bouquet_list;
+var g_display_logos = "";
+function build_epg_plus(_bouquet, _starttime)
+{
+ build_epg_clear();
+ epg_data = new Array();
+ epg_data_index=0;
+ var _bouquets_xml = loadSyncURLxml("/control/getbouquet?bouquet=" + _bouquet + "&xml=true");
+ if (_bouquets_xml)
+ {
+ g_bouquet_list = _bouquets_xml.getElementsByTagName("channel");
+ var ep = jQuery("#epg_plus");
+ var _stoptime = _starttime + c_min_per_col * 60 * g_number_of_cols;
+ var __tdiv = obj_createAt(ep, "div", "ep_time_bar");
+ var __tname_div = obj_createAt(__tdiv, "div", "ep_time_bar_item");
+ __tname_div.innerHTML = "Uhrzeit";
+ __tname_div.style.cssText = "width:" + c_width_px_bouquet + "px;";
+ build_epg_time_bar(__tdiv, _starttime, _stoptime);
+ __tdiv.style.cssText = "width:" + g_width_px;
+ var __ediv = obj_createAt(ep, "div", "epg_plus_container");
+ __ediv.setAttribute("id", "epg_plus_container")
+ g_i = 0;
+ window.setTimeout("build_epg_plus_loop(" + _starttime + "," + _stoptime + ")", 100);
+ }
+}
+
+function build_epg_plus_loop(_starttime, _stoptime)
+{
+ if (g_i" : __channel_name;
+ jQuery("#"+__bname_div).css({ "width": c_width_px_bouquet + "px"});
+ jQuery("#"+__bname_div).html("" + ch_name_with_logo + "");
+ build_epg_bouquet(__bdiv, __channel_id, _starttime, _stoptime, __logo);
+ window.setTimeout("build_epg_plus_loop(" + _starttime + "," + _stoptime + ")", 100);
+ g_i++;
+ }
+ else
+ {
+ show_waitbox(false);
+ obj_disable("btGet", false);
+ }
+}
+
+/* main: build epg+ */
+function build_epg_plus_main()
+{
+ epg_plus_calc_dimensions();
+ get_timer();
+ show_obj("epg_info", false);
+ show_waitbox(true);
+ obj_disable("btGet", true);
+ var sel = document.e.bouquets.selectedIndex;
+ if (sel != -1)
+ bou = document.e.bouquets[sel].value;
+ else
+ bou = 1;
+ _secs = document.e.epg_time.value;
+ _secs = parseInt(_secs);
+ build_epg_plus(bou, _secs);
+ //document.getElementById("epg_plus").width = g_width_px;
+}
+
+/* change time offset and build epg+ */
+function build_epg_plus_delta(_delta)
+{
+ if (document.e.epg_time.selectedIndex + _delta < document.e.epg_time.length && document.e.epg_time.selectedIndex + _delta >= 0)
+ document.e.epg_time.selectedIndex += _delta;
+ build_epg_plus_main();
+}
+
+/* time delta dropdown-list */
+function build_time_list(_delta)
+{
+ var now = new Date();
+ now.setMinutes(0);
+ now.setSeconds(0);
+ now.setMilliseconds(0);
+ now = new Date(now.getTime() + _delta * 60 * 60 * 1000);
+ var _secs = now / 1000;
+ var _hour = now.getHours();
+ var et = document.getElementById("epg_time");
+ for (i = 0; i < 24; i++)
+ {
+ var _time = (_hour + i) % 24;
+ if(_time < 10)
+ _time = "0" + _time;
+ _time += ":00";
+ var _time_t = _secs + i * 3600;
+ var __item = obj_createAt(et, "option", "ep_bouquet_item");
+ __item.text = _time;
+ __item.value = _time_t;
+ }
+}
+
+/* init call */
+function epg_plus_init(_display_logos)
+{
+ g_display_logos = _display_logos;
+ window.onresize = epg_plus_calc_dimensions();
+ build_time_list(0);
+}
diff --git a/data/y-web/Y_Tools_Menue.yhtm b/data/y-web/Y_Tools_Menue.yhtm
index 7ca78bfbf..93f8404a0 100644
--- a/data/y-web/Y_Tools_Menue.yhtm
+++ b/data/y-web/Y_Tools_Menue.yhtm
@@ -41,16 +41,16 @@ function init(){
{=var-set:m_link_text={=L:tools.mounts=}=}
{=include-block:Y_Blocks.txt;management_link=}
- {=L:ni.netfs-control=}
+ {=L:tools.netfs-control=}
-
- {=var-set:m_link_href=Y_NI_NetFS-init.yhtm?mount_type=0&mount_type_s=fstab=}
+ {=var-set:m_link_href=Y_Tools_NetFS-init.yhtm?mount_type=0&mount_type_s=fstab=}
{=var-set:m_link_desc=fstab-{=L:tools.mounts=}=}
{=var-set:m_link_text=/var/etc/fstab=}
{=include-block:Y_Blocks.txt;management_link=}
-
- {=var-set:m_link_href=Y_NI_NetFS-init.yhtm?mount_type=1&mount_type_s=automount=}
+ {=var-set:m_link_href=Y_Tools_NetFS-init.yhtm?mount_type=1&mount_type_s=automount=}
{=var-set:m_link_desc={=L:tools.automount=}=}
{=var-set:m_link_text=/var/etc/auto.net=}
{=include-block:Y_Blocks.txt;management_link=}
diff --git a/data/y-web/Y_NI_NetFS-control.yhtm b/data/y-web/Y_Tools_NetFS.yhtm
similarity index 74%
rename from data/y-web/Y_NI_NetFS-control.yhtm
rename to data/y-web/Y_Tools_NetFS.yhtm
index 3053ac830..cd3ed169a 100644
--- a/data/y-web/Y_NI_NetFS-control.yhtm
+++ b/data/y-web/Y_Tools_NetFS.yhtm
@@ -21,7 +21,7 @@
{=include-block:Y_Blocks.txt;head_close=}
-{=var-set:wait_text={=L:ni.netfs-control.title=}
=}{=include-block:Y_Blocks.txt;snip_wait=}
+{=var-set:wait_text={=L:tools.netfs.title=} =}{=include-block:Y_Blocks.txt;snip_wait=}
- {=var-set:menu={=L:ni.netfs-control.title=}=}{=include-block:Y_Blocks.txt;work_menu=}
+ {=var-set:menu={=L:tools.netfs.title=}=}{=include-block:Y_Blocks.txt;work_menu=}
-
+
{=if-equal:{=mount_type=}~1~
-
+
~
=}
diff --git a/data/y-web/Y_NI_NetFS-edit.yhtm b/data/y-web/Y_Tools_NetFS_edit.yhtm
similarity index 78%
rename from data/y-web/Y_NI_NetFS-edit.yhtm
rename to data/y-web/Y_Tools_NetFS_edit.yhtm
index 40e3e6e36..4e7527f33 100644
--- a/data/y-web/Y_NI_NetFS-edit.yhtm
+++ b/data/y-web/Y_Tools_NetFS_edit.yhtm
@@ -22,10 +22,10 @@ function do_submit()
{=include-block:Y_Blocks.txt;head_close=}
-{=var-set:wait_text={=L:ni.netfs-control.title=} =}{=include-block:Y_Blocks.txt;snip_wait=}
+{=var-set:wait_text={=L:tools.netfs.title=} =}{=include-block:Y_Blocks.txt;snip_wait=}
- {=var-set:menu={=L:ni.netfs-control.title=} ({=L:ni.edit=}: {=L:ni.netfs-{=mount_type=}=} - {=nr=})=}{=include-block:Y_Blocks.txt;work_menu=}
+ {=var-set:menu={=L:tools.netfs.title=} ({=L:ni.edit=}: {=L:tools.netfs.{=mount_type=}=} - {=nr=})=}{=include-block:Y_Blocks.txt;work_menu=}
diff --git a/data/y-web/Y_NI_NetFS-init.yhtm b/data/y-web/Y_Tools_NetFS_init.yhtm
similarity index 81%
rename from data/y-web/Y_NI_NetFS-init.yhtm
rename to data/y-web/Y_Tools_NetFS_init.yhtm
index 8a1d9f072..38961ae61 100644
--- a/data/y-web/Y_NI_NetFS-init.yhtm
+++ b/data/y-web/Y_Tools_NetFS_init.yhtm
@@ -2,7 +2,7 @@
{=include-block:Y_Blocks.txt;head_close=}
diff --git a/data/y-web/Y_Version.txt b/data/y-web/Y_Version.txt
index 6c5f86ba8..722c5d32c 100644
--- a/data/y-web/Y_Version.txt
+++ b/data/y-web/Y_Version.txt
@@ -1,3 +1,3 @@
-version=3.0.49
-date=28.02.2023
+version=3.0.50
+date=02.03.2023
info=NI-Neutrino-Webinterface
diff --git a/data/y-web/languages/Deutsch b/data/y-web/languages/Deutsch
index 662eadaca..de89cdeb5 100644
--- a/data/y-web/languages/Deutsch
+++ b/data/y-web/languages/Deutsch
@@ -404,6 +404,29 @@ tools.yinstaller.head=yInstaller
tools.yinstaller.tar_file=tar-Datei
tools.yinstaller.upload_install=hochladen und installieren
+# ===== Tools NetFS
+tools.netfs=NetFS
+tools.netfs.0=fstab
+tools.netfs.1=auto.net
+tools.netfs.title=NetFS-Steuerung
+tools.netfs.entrys=NetFS-Einträge
+tools.netfs.restart_menu=Das NetFS-Menü wird nun erneut gestartet
+tools.netfs.mount_all=Alle einhängen
+tools.netfs.umount_all=Alle aushängen
+tools.netfs.mount=Einhängen
+tools.netfs.umount=Aushängen
+tools.netfs.type=Typ
+tools.netfs.ip=Entfernte IP-Adresse
+tools.netfs.dir=Entferntes Verzeichnis
+tools.netfs.user=Benutzername
+tools.netfs.password=Passwort
+tools.netfs.options=Optionen
+tools.netfs.dump=Dump
+tools.netfs.pass=Pass
+tools.netfs.local_dir=Lokales Verzeichnis
+tools.netfs.active=Eintrag aktiv
+tools.netfs.autofs_restart=autofs neu starten
+
# ===== Tools
tools.automount=AutoMounts
tools.mounts_desc=File mounts organisieren
@@ -552,25 +575,3 @@ ni.reload=Neu laden
ni.configure=Konfigurieren
ni.dblclick=Doppelklick erforderlich
ni.infopage=NI Infoseite
-
-ni.netfs-control=NetFS
-ni.netfs-0=fstab
-ni.netfs-1=auto.net
-ni.netfs-control.title=NetFS-Steuerung
-ni.netfs-control.entrys=NetFS-Einträge
-ni.netfs-control.restart_menu=Das NetFS-Menü wird nun erneut gestartet
-ni.netfs-control.mount_all=Alle einhängen
-ni.netfs-control.umount_all=Alle aushängen
-ni.netfs-control.mount=Einhängen
-ni.netfs-control.umount=Aushängen
-ni.netfs-control.type=Typ
-ni.netfs-control.ip=Entfernte IP-Adresse
-ni.netfs-control.dir=Entferntes Verzeichnis
-ni.netfs-control.user=Benutzername
-ni.netfs-control.password=Passwort
-ni.netfs-control.options=Optionen
-ni.netfs-control.dump=Dump
-ni.netfs-control.pass=Pass
-ni.netfs-control.local_dir=Lokales Verzeichnis
-ni.netfs-control.active=Eintrag aktiv
-ni.netfs-control.autofs_restart=autofs neu starten
diff --git a/data/y-web/languages/English b/data/y-web/languages/English
index 36d1fd3a1..00a788678 100644
--- a/data/y-web/languages/English
+++ b/data/y-web/languages/English
@@ -404,6 +404,29 @@ tools.yinstaller.head=yInstaller
tools.yinstaller.tar_file=tar-File
tools.yinstaller.upload_install=upload and install
+# ===== Tools NetFS
+tools.netfs=NetFS
+tools.netfs.0=fstab
+tools.netfs.1=auto.net
+tools.netfs.title=NetFS-Control
+tools.netfs.entrys=NetFS-Entrys
+tools.netfs.restart_menu=The NetFS-Menu will restart now
+tools.netfs.mount_all=Mount all
+tools.netfs.umount_all=Unmount all
+tools.netfs.mount=Mount
+tools.netfs.umount=Unmount
+tools.netfs.type=Typ
+tools.netfs.ip=Remote IP-Adress
+tools.netfs.dir=Remote directory
+tools.netfs.user=Username
+tools.netfs.password=Password
+tools.netfs.options=Options
+tools.netfs.dump=Dump
+tools.netfs.pass=Pass
+tools.netfs.local_dir=Local directory
+tools.netfs.active=Entry active
+tools.netfs.autofs_restart=Restart autofs
+
# ===== Tools
tools.automount=AutoMounts
tools.mounts_desc=organize file mounts
@@ -552,25 +575,3 @@ ni.reload=Reload
ni.configure=Configure
ni.dblclick=Doubleclick required
ni.infopage=NI Infopage
-
-ni.netfs-control=NetFS
-ni.netfs-0=fstab
-ni.netfs-1=auto.net
-ni.netfs-control.title=NetFS-Control
-ni.netfs-control.entrys=NetFS-Entrys
-ni.netfs-control.restart_menu=The NetFS-Menu will restart now
-ni.netfs-control.mount_all=Mount all
-ni.netfs-control.umount_all=Unmount all
-ni.netfs-control.mount=Mount
-ni.netfs-control.umount=Unmount
-ni.netfs-control.type=Typ
-ni.netfs-control.ip=Remote IP-Adress
-ni.netfs-control.dir=Remote directory
-ni.netfs-control.user=Username
-ni.netfs-control.password=Password
-ni.netfs-control.options=Options
-ni.netfs-control.dump=Dump
-ni.netfs-control.pass=Pass
-ni.netfs-control.local_dir=Local directory
-ni.netfs-control.active=Entry active
-ni.netfs-control.autofs_restart=Restart autofs
|