diff --git a/src-modules/module/xcube/conf/xcube.xml b/src-modules/module/xcube/conf/xcube.xml
index 1272e65..bf8b4e3 100644
--- a/src-modules/module/xcube/conf/xcube.xml
+++ b/src-modules/module/xcube/conf/xcube.xml
@@ -155,6 +155,7 @@ parent="xCubes">Abfragen zur Administration von xCubes
+
@@ -165,6 +166,7 @@ parent="xCubes">Abfragen zur Administration von xCubes
+
diff --git a/src-modules/module/xcube/masken/21000_felderinfo.unl b/src-modules/module/xcube/masken/21000_felderinfo.unl
index 7d88f8c..c967e46 100644
--- a/src-modules/module/xcube/masken/21000_felderinfo.unl
+++ b/src-modules/module/xcube/masken/21000_felderinfo.unl
@@ -42,5 +42,5 @@ and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fi
21021^Abschluss^7^0^0^140^170^5^char^30^0^1^<> select abint,dtxt from k_abint order by 2;^^^
21022^Kennzahl^3000^350^-1^150^180^1^integer^200^1^1^<> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} order by sortnr,name;^hidden^<> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} and is_default=1^
21023^2.Ansicht in Zeilen^125^0^0^100^100^1^char^50^0^999^<> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_secondrowdim=1 order by 1^hidden^1^
-21024^Wohnort^38^0^0^140^80^1^char^30^0^12^<> select tid,name,sortnr from sichten where art in ('SOS-Wohnort-Sicht') order by 3,2;^^^
-21025^Alter^39^0^0^140^80^1^char^30^0^12^<> select tid,name,sortnr from sichten where art in ('xcube_dim_alter') order by 3,2;^^^
+21024^Wohnort^38^0^0^140^80^1^char^30^0^12^<> select tid,name,sortnr from sichten where art in ('XCUBE-Wohnort-Sicht') order by 3,2;^^^
+21025^Alter^39^0^0^140^80^1^char^30^0^12^<> select tid,name,sortnr from sichten where art in ('XCUBE-Alter-Sicht') order by 3,2;^^^
diff --git a/src-modules/module/xcube/masken/21000_maskeninfo.unl b/src-modules/module/xcube/masken/21000_maskeninfo.unl
index 68273b0..f29c2dc 100644
--- a/src-modules/module/xcube/masken/21000_maskeninfo.unl
+++ b/src-modules/module/xcube/masken/21000_maskeninfo.unl
@@ -3,23 +3,40 @@
\
select table_name from xcube where maskeninfo_id=${Maskennummer}\
select aggrfunction from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<>\
-select nvl(restriction,''::char(1)) from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<>\
-select nvl(datatype,'decimal(17,2)'::varchar(30)) from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<>\
---benoetigt falls Kennzahlen in Zeilen oder Splaten\
-select apnr,aggrfunction,nvl(restriction,''::char(1)) as restriction from xcube_kennzahl where maskeninfo_id=${Maskennummer}\
+select nvl(restriction,''::char(1)) from xcube_kennzahl \
+where maskeninfo_id=${Maskennummer} and tid=<>\
+\
+select nvl(datatype,'decimal(17,2)'::varchar(30)) from xcube_kennzahl \
+where maskeninfo_id=${Maskennummer} and tid=<>\
+--benoetigt falls Kennzahlen in Zeilen oder Spalten\
+select apnr,aggrfunction,\
+nvl(restriction,''::char(1)) as restriction \
+from xcube_kennzahl where maskeninfo_id=${Maskennummer}\
select restriction from xcube where maskeninfo_id=<>]]>\
->]]>\
\
\
-select distinct ${coldef.foreignkey_col} as apnr,${coldef.foreignkey_cap} as name,\
-1::smallint as detailgesamtsort,${coldef.sortfield} as tmp_sortfield\
+select distinct ${coldef.foreignkey_col} as apnr,\
+${coldef.foreignkey_cap} as name,\
+1::smallint as detailgesamtsort,\
+${coldef.sortfield} as tmp_sortfield\
from ${coldef.foreignkey_tab} where \
1=1 \
<#if coldef.foreignkey_cond!=''> and ${coldef.foreignkey_cond} #if>\
@@ -32,9 +49,13 @@ and ${coldef.foreignkey_col}::varchar(255) in (select distinct ${coldef.name}::v
#if>\
<#if coldef.calc_gesamt?number=1> \
union\
-select 'gesamt','Gesamt',2::smallint as detailgesamtsort,null as tmp_sortfield from xdummy\
+select 'gesamt','Gesamt',\
+2::smallint as detailgesamtsort,\
+null as tmp_sortfield from xdummy\
#if>\
-order by detailgesamtsort,tmp_sortfield,name;\
+order by detailgesamtsort,\
+tmp_sortfield,\
+name;\
<#else>\
select 'Sichtspalten aktiv' from xdummy;\
#if>\
@@ -52,8 +73,11 @@ from xcube_dimconfig C where maskeninfo_id=${Maskennummer} and name=<\
-select 1::smallint as level, ${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
-${rowdef.foreignkey_cap} as name,${rowdef.sortfield} as tmp_sortfield from ${rowdef.foreignkey_tab}\
+select 1::smallint as level, \
+${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
+${rowdef.foreignkey_cap} as name,\
+${rowdef.sortfield} as tmp_sortfield \
+from ${rowdef.foreignkey_tab}\
where 1=1\
<#if rowdef.foreignkey_cond!=''> and ${rowdef.foreignkey_cond} #if>\
--{rowdef.specific_restriction} \
@@ -69,7 +93,12 @@ select 'nicht relevant' from xdummy;#if>\
\
>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">\
-select name,caption,is_sicht,calc_gesamt,foreignkey_tab,foreignkey_col,foreignkey_cap,\
+select name,caption,\
+is_sicht,\
+calc_gesamt,\
+foreignkey_tab,\
+foreignkey_col,\
+foreignkey_cap,\
nvl(foreignkey_cond,''::varchar(1)) as foreignkey_cond,\
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\
C.sortfield\
@@ -82,8 +111,11 @@ select 'keine zweite RowDef' from xdummy;\
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant\
>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>"&&zweiteRowDef.is_sicht=0>\
-select 1::smallint as level, ${zweiteRowDef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
-${zweiteRowDef.foreignkey_cap} as name,${zweiteRowDef.sortfield} as tmp_sortfield from ${zweiteRowDef.foreignkey_tab}\
+select 1::smallint as level, \
+${zweiteRowDef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
+${zweiteRowDef.foreignkey_cap} as name,\
+${zweiteRowDef.sortfield} as tmp_sortfield \
+from ${zweiteRowDef.foreignkey_tab}\
where 1=1\
<#if zweiteRowDef.foreignkey_cond!=''> and ${zweiteRowDef.foreignkey_cond} #if>\
--{zweiteRowDef.specific_restriction} \
@@ -318,7 +350,7 @@ update tmp_erg set name=replace(name,col1||' - ','');\
\
\
select \
- <#if rowdef.is_sicht>0>ebene,col1,#if>\
+ <#if rowdef.is_sicht>0>ebene,#if>\
name,\
<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">col2,#if>\
<#assign i=0/>\
@@ -340,19 +372,16 @@ XIL List\
min_heading_height=35\
<#if rowdef.is_sicht==1>\
Column CID=0 heading_text="Ebene" center_heading\
- row_selectable heading_platform readonly\
- width=10 text_size=8\
-Column CID=20 heading_text="${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}Nr" center_heading\
- row_selectable heading_platform readonly\
- width=10 text_size=10\
+ row_selectable heading_platform readonly explanation="Hierarchieebene"\
+ width=5 text_size=8\
#if>\
Column CID=20 heading_text="${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}" center_heading\
- row_selectable heading_platform readonly\
- width=10 text_size=10\
+ row_selectable heading_platform readonly explanation="Schlüssel: ${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}Nr"\
+ width=30 text_size=30\
<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">\
Column CID=20 heading_text="${.vars["2.Ansicht in ZeilenObject"].selectedItems[0].name}" center_heading\
row_selectable heading_platform readonly\
- width=10 text_size=10\
+ width=20 text_size=10 explanation="${.vars["2.Ansicht in ZeilenObject"].selectedItems[0].name}"\
#if>\
<#if coldef.is_sicht>0>\
<#assign ergspalten=.vars[coldef.caption].elements/>\
@@ -361,9 +390,7 @@ Column CID=20 heading_text="${.vars["2.Ansicht in ZeilenObject"].selectedItems[0
#if>\
<#foreach spalte in ergspalten>\
Column CID=1 heading_text="${spalte.name}" center_heading\
- row_selectable heading_platform readonly\
+ row_selectable heading_platform readonly explanation="Ausprägung ${spalte.name}"\
width=12\
#foreach>\
-\
-\
@@@^Altersgruppe^Anzahl^Dynamische Darstellung von Studierendenzahlen^drop table tmp_erg;^^3^700^360^0^1^^
diff --git a/src-modules/module/xcube/schluesseltabellen/sichten_fuellen.sql b/src-modules/module/xcube/schluesseltabellen/sichten_fuellen.sql
new file mode 100755
index 0000000..e7611a6
--- /dev/null
+++ b/src-modules/module/xcube/schluesseltabellen/sichten_fuellen.sql
@@ -0,0 +1,124 @@
+--freemarker template
+<#if SQLdialect='Postgres'>
+select setval('sichten_tid_seq',(select max(tid) from sichten));
+#if>
+<#assign systeminfoid="1000" />
+<#assign sichten = [
+ {"name_intern":"xcube_dim_alter",
+ "name":"Alter (gruppiert in 5er-Schritten)",
+ "quelle":"<> select name,apnr,parent,strukturstr from xcube_dims where id=''alter'' order by 2",
+ "art":"XCUBE-Alter-Sicht"},
+ {"name_intern":"xcube_dim_wohnort",
+ "name":"Wohnort nach Bundesländern",
+ "quelle":"<> select ''Deutschland''::varchar(255) as druck , ''0'' as apnr, null::varchar(255) as parent from xdummy union select druck,apnr,''0'' from cifx where key=8 union select druck, '''' || val(astat), bund_apnr from cifx where key=11 order by 1",
+ "art":"XCUBE-Wohnort-Sicht"}
+
+ ] />
+
+
+--Ab hier braucht man nichts ändern:
+
+CREATE temp TABLE tmp_sichten (
+ parent character(255),
+ systeminfoid integer DEFAULT 0 NOT NULL,
+ art character(40),
+ type integer ,
+ name_intern character(200),
+ name character(200),
+ beschreibung character(255),
+ sortnr integer DEFAULT 0 NOT NULL,
+ quelle character(255),
+ alt_hier_id character(150),
+ treecfgtable character(255),
+ treecfgid character(150),
+ label smallint DEFAULT 0 NOT NULL,
+ user_rechte smallint DEFAULT 1 NOT NULL,
+ rechtequelle character(255),
+ sesamkey character(100),
+ standbutton smallint DEFAULT 0 NOT NULL,
+ attribut1 character(255),
+ attribut2 character(255),
+ attribut3 integer,
+ attribut4 integer,
+ xmlmaxentries integer,
+ gueltig_seit date ,
+ gueltig_bis date,
+ aktiv smallint DEFAULT 1
+);
+<#assign sortnr=0 />
+<#foreach sicht in sichten>
+<#assign sortnr=sortnr+1 />
+-- Sicht ${sicht.name}
+
+INSERT INTO tmp_sichten(
+ systeminfoid ,
+ art ,
+ type ,
+ name_intern ,
+ name ,
+ sortnr ,
+ quelle ,
+ label ,
+ user_rechte ,
+ standbutton ,
+ gueltig_seit ,
+ gueltig_bis ,
+ aktiv
+ ) select
+ ${systeminfoid} ,
+ '${sicht.art}' ,
+ 10 ,
+ '${sicht.name_intern}' ,
+ '${sicht.name}' ,
+ ${sortnr} ,
+ '${sicht.quelle}',
+ 0 ,
+ 0 ,
+ 0 ,
+ date_val('01.01.1900') ,
+ date_val('01.01.3000') ,
+ 1 from xdummy;
+#foreach>
+
+--Zur Sicherheit alle Quellen und Standbutton von Sichten
+update sichten set quelle=(select T.quelle from tmp_sichten T
+ where T.name_intern=sichten.name_intern)
+ where name_intern in (select T2.name_intern from tmp_sichten T2)
+ ;
+update sichten set standbutton=(select T.standbutton from tmp_sichten T
+ where T.name_intern=sichten.name_intern)
+ where name_intern in (select T2.name_intern from tmp_sichten T2)
+ ;
+
+delete from tmp_sichten where name_intern in (select name_intern from sichten);
+
+
+ INSERT INTO sichten(
+ systeminfoid , art , type , name_intern , name ,
+ sortnr , quelle , label ,
+ user_rechte , standbutton ,
+ xmlmaxentries ,
+ gueltig_seit , gueltig_bis , aktiv)
+ select systeminfoid , art , type , name_intern , name ,
+ sortnr , quelle , label ,
+ user_rechte , standbutton ,
+ xmlmaxentries ,
+ gueltig_seit , gueltig_bis , aktiv
+ from tmp_sichten S;
+
+
+--Rechte für Sichten geben
+select 'Rechte für Sichten geben' from xdummy;
+delete from sachgeb_sichtarten where sichtart in
+(select distinct art from tmp_sichten);
+
+insert into sachgeb_sichtarten
+(
+ sachgebiete_id ,
+ sichtart
+)
+select distinct ${systeminfoid},art from tmp_sichten;
+
+
+drop table tmp_sichten;
+
diff --git a/src-modules/module/xcube/schluesseltabellen/xcube_install.sql b/src-modules/module/xcube/schluesseltabellen/xcube_install.sql
index 5801c4a..04f0f52 100644
--- a/src-modules/module/xcube/schluesseltabellen/xcube_install.sql
+++ b/src-modules/module/xcube/schluesseltabellen/xcube_install.sql
@@ -98,13 +98,13 @@
"sortfield":"tid"},
{"maskeninfo_id":21000,
"name":"semkfz",
- "caption":"Wohnort",
+ "caption":"Wohnort (Semesterwohnsitz)",
"is_coldim":0,
"is_sicht":1 },
{"maskeninfo_id":21000,
"name":"alter",
"caption":"Alter",
- "is_sicht":2},
+ "is_sicht":1},
<#-- Primärbuchungswürfel -->
{"maskeninfo_id":21500,
diff --git a/src-modules/module/xcube/xcube_sichten.sql b/src-modules/module/xcube/xcube_sichten.sql
deleted file mode 100644
index a2f59f6..0000000
--- a/src-modules/module/xcube/xcube_sichten.sql
+++ /dev/null
@@ -1,4 +0,0 @@
---SQL-Sicht für die Dimension Alter
-delete from sichten where art='xcube_dim_alter';
-insert into sichten (art,type,name_intern,name,quelle,gueltig_seit,gueltig_bis,aktiv)
-values ('xcube_dim_alter',10,'xdim_alter','Alter','<> select name,apnr,parent,strukturstr from xcube_dims where id=''alter''','1900-01-01','3000-01-01',1);
\ No newline at end of file