val: 'title',
fields: ['uuid', 'title', 'status'],
tabIndex: index,
+ uilevel: 'expert',
list: { url: 'api/caclient/list', params: { } },
edit: { params: { list: list } },
add: {
if (l >= 0) {
var tr = {0:'basic',1:'advanced',2:'expert'};
l = (l in tr) ? tr[l] : 'basic';
- tvheadend.uilevel = l;
+ tvheadend.change_uilevel(l);
abuttons.uilevel.initialConfig.tvh_uilevel_set(l);
}
},
titleP: _('Video Stream Filters'),
iconCls: 'film_edit',
tabIndex: 1,
+ uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
titleP: _('Audio Stream Filters'),
iconCls: 'control_volume',
tabIndex: 2,
+ uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
titleP: _('Teletext Stream Filters'),
iconCls: 'teletext',
tabIndex: 3,
+ uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
titleP: _('Subtitle Stream Filters'),
iconCls: 'subtitle',
tabIndex: 4,
+ uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
titleP: _('CA Stream Filters'),
iconCls: 'film_key',
tabIndex: 5,
+ uilevel: 'expert',
add: {
params: { list: eslist },
url: 'api/esfilter/ca',
titleP: _('Other Stream Filters'),
iconCls: 'otherFilters',
tabIndex: 6,
+ uilevel: 'expert',
edit: { params: { list: eslist } },
add: {
params: { list: eslist },
this.get_hidden = function(uilevel) {
var hidden = this.hidden || this.noui;
- if (uilevel !== 'expert') {
- if (uilevel === 'advanced' && this.uilevel === 'expert')
- hidden = true;
- else if (uilevel === 'basic' && this.uilevel !== 'basic')
- hidden = true;
- }
+ if (!tvheadend.uilevel_match(this.uilevel, uilevel))
+ hidden = true;
return hidden;
}
var cnt = 0;
for (var i = 0; i < g.length; i++) {
var f = g[i];
- var hide = false;
- if (uilevel == 'basic') {
- hide = f.tvh_uilevel !== 'basic';
- } else if (uilevel == 'advanced') {
- hide = f.tvh_uilevel === 'expert';
- }
- if (hide)
+ if (!tvheadend.uilevel_match(f.tvh_uilevel, uilevel))
f.setVisible(false);
else
cnt++;
}
};
+/*
+ *
+ */
+tvheadend.idnode_panel = function(conf, panel, dpanel, builder, destroyer)
+{
+ if (!conf.uilevel || tvheadend.uilevel_match(conf.uilevel, tvheadend.uilevel)) {
+ tvheadend.paneladd(panel, dpanel, conf.tabIndex);
+ tvheadend.panelreg(panel, dpanel, builder, destroyer);
+ }
+
+ if (conf.uilevel) {
+ var f = function(l) {
+ var d = panel.findById(dpanel.id);
+ if (!tvheadend.uilevel_match(conf.uilevel, l)) {
+ if (d) {
+ panel.remove(dpanel);
+ destroyer();
+ }
+ } else {
+ if (!d) {
+ tvheadend.paneladd(panel, dpanel, conf.tabIndex);
+ tvheadend.panelreg(panel, dpanel, builder, destroyer);
+ }
+ }
+ }
+ tvheadend.uilevel_cb.push(f);
+ }
+}
/*
* IDnode grid
iconCls: conf.iconCls || ''
});
- tvheadend.paneladd(panel, dpanel, conf.tabIndex);
- tvheadend.panelreg(panel, dpanel, builder, destroyer);
+ tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};
/*
iconCls: conf.iconCls || ''
});
- tvheadend.paneladd(panel, dpanel, conf.tabIndex);
- tvheadend.panelreg(panel, dpanel, builder, destroyer);
+ tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};
/*
iconCls: conf.iconCls || ''
});
- tvheadend.paneladd(panel, dpanel, conf.tabIndex);
- tvheadend.panelreg(panel, dpanel, builder, destroyer);
+ tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};
/*
if (mpanel)
mpanel.fireEvent('uilevel');
});
- tvheadend.paneladd(panel, dpanel, conf.tabIndex);
- tvheadend.panelreg(panel, dpanel, builder, destroyer);
+
+ tvheadend.idnode_panel(conf, panel, dpanel, builder, destroyer);
};
tvheadend.admin = false;
tvheadend.dialog = null;
tvheadend.uilevel = 'expert';
+tvheadend.uilevel_cb = [];
tvheadend.cookieProvider = new Ext.state.CookieProvider({
// 7 days from now
}
tvheadend.fromCSV = function(s) {
- var a = s.split(',');
- var r = [];
- for (var i in a) {
- var v = a[i];
- if (v[0] == '"' && v[v.length-1] == '"')
- r.push(v.substring(1, v.length - 1));
- else
- r.push(v);
- }
- return r;
+ var a = s.split(',');
+ var r = [];
+ for (var i in a) {
+ var v = a[i];
+ if (v[0] == '"' && v[v.length-1] == '"')
+ r.push(v.substring(1, v.length - 1));
+ else
+ r.push(v);
+ }
+ return r;
+}
+
+/**
+ * Change uilevel
+ */
+tvheadend.uilevel_match = function(target, current) {
+ if (current !== 'expert') {
+ if (current === 'advanced' && target === 'expert')
+ return false;
+ else if (current === 'basic' && target !== 'basic')
+ return false;
+ }
+ return true;
+}
+
+tvheadend.change_uilevel = function(uilevel) {
+ if (tvheadend.uilevel !== uilevel) {
+ tvheadend.uilevel = uilevel;
+ for (var i = 0; i < tvheadend.uilevel_cb.length; i++)
+ tvheadend.uilevel_cb[i](uilevel);
+ }
}
/**
return;
tvheadend.admin = o.admin == true;
- if (o.uilevel)
- tvheadend.uilevel = o.uilevel;
if ('info_area' in o)
tvheadend.rootTabPanel.setInfoArea(o.info_area);
/* General */
var general = new Ext.TabPanel({
+ tabIndex: 0,
activeTab: 0,
autoScroll: true,
title: _('General'),
/* Users */
var users = new Ext.TabPanel({
+ tabIndex: 1,
activeTab: 0,
autoScroll: true,
title: _('Users'),
/* DVB inputs, networks, muxes, services */
var dvbin = new Ext.TabPanel({
+ tabIndex: 2,
activeTab: 0,
autoScroll: true,
title: _('DVB Inputs'),
/* Channel / EPG */
var chepg = new Ext.TabPanel({
+ tabIndex: 3,
activeTab: 0,
autoScroll: true,
title: _('Channel / EPG'),
/* Stream Config */
var stream = new Ext.TabPanel({
+ tabIndex: 4,
activeTab: 0,
autoScroll: true,
title: _('Stream'),
/* DVR / Timeshift */
var tsdvr = new Ext.TabPanel({
+ tabIndex: 5,
activeTab: 0,
autoScroll: true,
title: _('Recording'),
/* CSA */
if (tvheadend.capabilities.indexOf('caclient') !== -1)
- tvheadend.caclient(cp, null);
+ tvheadend.caclient(cp, 6);
/* Debug */
- tvheadend.tvhlog(cp);
+ tvheadend.tvhlog(cp, 7);
/* Finish */
tvheadend.rootTabPanel.add(cp);
tvheadend.confpanel = cp;
cp.doLayout();
+
+ /* Force to change uilevel (callback!) */
+ tvheadend.uilevel = '';
}
+ if (o.uilevel)
+ tvheadend.change_uilevel(o.uilevel);
+
if (o.admin == true && tvheadend.statuspanel == null) {
tvheadend.statuspanel = new tvheadend.status;
tvheadend.rootTabPanel.add(tvheadend.statuspanel);