diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..703c23f --- /dev/null +++ b/.classpath @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..14853ae --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + portal + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..231deb1 --- /dev/null +++ b/build.xml @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-modules/module/portal/conf/excludes.txt b/src-modules/module/portal/conf/excludes.txt new file mode 100644 index 0000000..3ab2249 --- /dev/null +++ b/src-modules/module/portal/conf/excludes.txt @@ -0,0 +1,10 @@ +rohdaten/ETL_ENV +rohdaten/*.properties +preparation.sql +finalize.sql +rohdaten/*.err +*.log +*.err +rohdaten/unl/* +conf/customize.sql +conf/*.log diff --git a/src-modules/module/portal/conf/includes.txt b/src-modules/module/portal/conf/includes.txt new file mode 100644 index 0000000..eec7122 --- /dev/null +++ b/src-modules/module/portal/conf/includes.txt @@ -0,0 +1,7 @@ +doku/etl_modul/etl.html +WEB-INF/conf/edustore/db/bin/SQL_ENV_etl.sam +WEB-INF/lib/superx-etl.jar +images/eye.svg +images/downloadblck.svg +images/resultset_up.svg + diff --git a/src-modules/module/portal/conf/portal.xml b/src-modules/module/portal/conf/portal.xml new file mode 100644 index 0000000..19e6b4e --- /dev/null +++ b/src-modules/module/portal/conf/portal.xml @@ -0,0 +1,642 @@ + + + + + + + + + + Schlüsseltabelle für Portalkonfigurationen + + + + + (optional) + + + (optional für Filterung) + + + + + +superx +superx +portal_config +tid +1 +portal_config_pk + + + + + + +
+ + + + + Portal-Tab Metadaten + + + + + + + + + bei Frames + bei Frames + bei DOM + + + + +superx +superx +portal_config_tab +tid +1 +portal_config_tab_pk + + + + + + +
+ + Portalkonfiguration-Menü Metadaten + + + + + + + + + +superx +superx +portal_config_menu +tid +1 +portal_config_menu_pk + + + + + + +
+ + Portal-Elemente + + + Maske, Wiki, static_html, dbform + + + JS-Hander, wenn auf das Element geklickt wird + + + + Bei Wiki und static_html + + + + + + + + + + + +superx +superx +portal_element +tid +1 +portal_element_pk + + + + + + +
+ + Schlüsseltabelle für Arten von Portalelementen + + + + + + + + + +superx +superx +portal_element_type +tid +1 +portal_element_type_pk + + + + + + +
+ + + Schlüsseltabelle für Rollen von Portalelementen + + + + + + + + + + +superx +superx +portal_element_role +tid +1 +portal_element_role_pk + + + + + + +
+ + Zuordnung Element zu Portal + + + + + + + Header,Footer,Sidebar-left, sidebar-right, content + + + Wert 1-32 (max) + in px + + + + +superx +superx +portal_config2element +tid +1 +portal_config2element_pk + + + + + + +
+ + + Portal-Layout + + + + + fixed (Feste Spalten), smart (Responsiv) + 1-32 + + + + + + +superx +superx +portal_layout +tid +1 +portal_layout_pk + + + +
+ + Zuordnung Layout zu Portal + + + + + optional + + + + +superx +superx +portal_config2layout +tid +1 +portal_config2layout_pk + + + + + + +
+ + + Verlinkung Portal-Menü zu Elementen + + + + + + + +superx +superx +portal_config_menu2element +tid +1 +portal_config_menu2element_pk + + + + + + +
+ + + + + + + + + + + + +Abfragen zur Administration von Portalkonfiguration + + + + + Portalkonfiguration verwalten + + $PORTAL_PFAD/masken + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+In diesem Formular können Sie Portale verwalten. Im Details-Formular können Sie Eigenschaften zuordnen. + + + + + + + + +
+In diesem Formular können Sie Layouts verwalten. + +tid + + + + + + + + + + + + + + + + + + +
+In diesem Formular können Sie Portal Layouts verwalten. Im Details-Formular können Sie Eigenschaften zuordnen. + + + + + + + + +
+In diesem Formular können Sie Layouts verwalten. + +tid + + + + + + + + + + + + + +
+In diesem Formular können Sie Elemente verwalten. + +tid + + + + + + + + + + + + +
+
+ diff --git a/src-modules/module/portal/masken/52000_felderinfo.unl b/src-modules/module/portal/masken/52000_felderinfo.unl new file mode 100644 index 0000000..dc4b18d --- /dev/null +++ b/src-modules/module/portal/masken/52000_felderinfo.unl @@ -0,0 +1,7 @@ +52000^Benutzer/in^50^0^0^150^200^1^integer^200^0^1^<> select tid,nvl(name,benutzer) from userinfo order by 2;^hidden^^ +52001^Portal-Layouts bearbeiten^1000^0^0^140^80^1^char^255^0^18^ ^ ^<> select '../edit/portal/portal_layout_list.jsp' from xdummy;^ +52003^Stichwort^20^0^0^150^150^1^sql^50^0^0^^^^ +52004^Komponente^1^0^0^150^200^1^integer^200^0^13^<> select tid,name from systeminfo order by 2;^ ^^ +52005^Portale bearbeiten^100^0^0^140^80^1^char^255^0^18^ ^ ^<> select '../edit/portal/portal_config_list.jsp' from xdummy;^ +52006^Virtuelle Tabelle^5^0^0^150^200^1^integer^200^0^13^<> select tid,caption from rpta_resultset where 1=1 /* and systeminfo_id=<> */ order by 2;^^^ +52008^Schlüssel^15^0^0^150^80^1^sql^200^0^0^ ^^^ diff --git a/src-modules/module/portal/masken/52000_maske_system_bez.unl b/src-modules/module/portal/masken/52000_maske_system_bez.unl new file mode 100644 index 0000000..3e33479 --- /dev/null +++ b/src-modules/module/portal/masken/52000_maske_system_bez.unl @@ -0,0 +1 @@ +52000^370^ diff --git a/src-modules/module/portal/masken/52000_masken_felder_bez.unl b/src-modules/module/portal/masken/52000_masken_felder_bez.unl new file mode 100644 index 0000000..1124436 --- /dev/null +++ b/src-modules/module/portal/masken/52000_masken_felder_bez.unl @@ -0,0 +1,7 @@ +52000^52000^ +52000^52001^ +52000^52003^ +52000^52004^ +52000^52005^ +52000^52006^ +52000^52008^ diff --git a/src-modules/module/portal/masken/52000_maskeninfo.unl b/src-modules/module/portal/masken/52000_maskeninfo.unl new file mode 100644 index 0000000..a012022 --- /dev/null +++ b/src-modules/module/portal/masken/52000_maskeninfo.unl @@ -0,0 +1,62 @@ +52000^Portale verwalten^--Autor: D. Quathamer\ +--Datum: 15.3.2024\ +--freemarker template\ +create temp table tmp_portal_config(\ + tid INTEGER , \ +uniquename VARCHAR(255) not null, \ +caption VARCHAR(255) , \ +userinfo_id INTEGER , \ +print_maskeninfo_id INTEGER , \ +booklet_stylesheet VARCHAR(255) ,\ +layout_uniquename varchar(255),\ +layout_id integer,\ +id_param_name VARCHAR(255) ,\ +nextedit varchar(255)\ +);\ +insert into tmp_portal_config (tid,\ + uniquename,\ + caption,\ + userinfo_id,\ + print_maskeninfo_id,\ + booklet_stylesheet,\ +-- id_param,\ +-- id_param_name,\ + nextedit) \ +select tid,\ + uniquename,\ + caption,\ + userinfo_id,\ + print_maskeninfo_id,\ + booklet_stylesheet,\ +-- id_param,\ +-- id_param_name\ + ('../edit/portal/portal_config_edit.jsp|tid=' || C.tid)::varchar(255)\ +FROM portal_config C\ +where 1=1\ +/* and C.caption ilike '%<>%' */\ +/* and C.uniquename ilike '%<>%' */\ +;\ +\ +\ +\ +select \ +caption,\ +uniquename,\ +nextedit \ +\ +from tmp_portal_config\ +order by caption ,uniquename\ +;^XIL List\ + drop_and_delete movable_columns sizable_columns horizontal_scrolling\ + white_space_color=COLOR_WHITE fixed_columns=2\ + min_heading_height=35\ +Column CID=0 heading_text="Name" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=50 text_size=100\ +Column CID=0 heading_text="Schlüssel" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=50 text_size=100\ +Column CID=1 heading_text="Bearbeiten" center_heading\ + row_selectable col_selectable heading_platform readonly\ + width=5 text_size=200\ +@@@^^^Portale und Inhalte verwalten.^drop table tmp_portal_config;^^1^440^360^0^1^ ^ diff --git a/src-modules/module/portal/masken/52000_sachgeb_maske_bez.unl b/src-modules/module/portal/masken/52000_sachgeb_maske_bez.unl new file mode 100644 index 0000000..61e91e2 --- /dev/null +++ b/src-modules/module/portal/masken/52000_sachgeb_maske_bez.unl @@ -0,0 +1 @@ +381^52000^ diff --git a/src-modules/module/portal/schluesseltabellen/fm_templates.unl b/src-modules/module/portal/schluesseltabellen/fm_templates.unl new file mode 100644 index 0000000..d99b9df --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/fm_templates.unl @@ -0,0 +1,337 @@ +222^PORTAL-Makros^<#macro PORTAL_FUELLEN portal_config portal_elements portal_tabs>\ + create temp table tmp_portal_config(\ + tid INTEGER , \ +uniquename VARCHAR(255) not null, \ +caption VARCHAR(255) , \ +userinfo_id INTEGER , \ +print_maskeninfo_id INTEGER , \ +booklet_stylesheet VARCHAR(255) ,\ +layout_uniquename varchar(255),\ +layout_id integer,\ +id_param_name VARCHAR(255) \ +\ +) \ +;\ +\ +create temp table tmp_portal_element(\ + tid INTEGER, \ + element_type_uniquename varchar(255),\ +element_type_id INTEGER , \ +caption VARCHAR(255) , \ +uniquename VARCHAR(255),\ +onclick_event VARCHAR(255) , \ +description VARCHAR(255) , \ +open_modal_card_detail SMALLINT default 1 , \ +src_url VARCHAR(255) , \ +content_static TEXT , \ +content_maskeninfo_id INTEGER , \ +content_chart_uniquename VARCHAR(255) , \ +content_rpta_column_layout_uniquename VARCHAR(255) , \ +content_tablestylesheet VARCHAR(255) , \ +link_maskeninfo_id INTEGER , \ +link_chart_uniquename VARCHAR(255) , \ +link_tablestylesheet VARCHAR(255) , \ +active SMALLINT default 1 not null\ +\ +) \ +;\ +\ +create temp table tmp_portal_config2element(\ + \ +portal_config_id INTEGER not null, \ +portal_element_id INTEGER not null, \ +portal_config_tab_id INTEGER , \ +sortnr INTEGER , \ +element_role_id INTEGER , \ +is_foldable INTEGER , \ +is_maximizable INTEGER , \ +min_width INTEGER , \ +height INTEGER , \ +active SMALLINT default 1 not null\ +) \ +;\ +\ +create temp table tmp_portal_config2layout(\ + \ +portal_config_id INTEGER not null, \ +portal_layout_id INTEGER not null, \ +userinfo_id INTEGER , \ +active SMALLINT default 1 not null\ +) \ +;\ +\ +create temp table tmp_portal_config_tab(\ + \ +portal_config_id INTEGER, \ +caption VARCHAR(255) , \ +print_maskeninfo_id INTEGER , \ +booklet_stylesheet VARCHAR(255) , \ +sortnr SMALLINT default 0 , \ +tab_id VARCHAR(255) , \ +target_url VARCHAR(255) , \ +target_window VARCHAR(255) , \ +target_div VARCHAR(255) \ +\ +) \ +;\ +\ +insert into tmp_portal_config(uniquename,\ + caption,\ +-- userinfo_id,\ + print_maskeninfo_id,\ + booklet_stylesheet,\ + id_param_name)\ +select '${portal_config.uniquename}',\ +'${portal_config.caption}',\ +<#if portal_config.print_maskeninfo_id?exists> ${portal_config.print_maskeninfo_id} <#else> null::integer,\ +<#if portal_config.booklet_stylesheet?exists> '${portal_config.booklet_stylesheet}' <#else> null::varchar(255) ,\ +<#if portal_config.id_param_name?exists> '${portal_config.id_param_name}' <#else> null::varchar(255) \ +from xdummy;\ +\ +update portal_config set caption='${portal_config.caption}'\ +<#if portal_config.print_maskeninfo_id?exists>, print_maskeninfo_id=${portal_config.print_maskeninfo_id} \ +<#if portal_config.booklet_stylesheet?exists>, booklet_stylesheet='${portal_config.booklet_stylesheet}' \ +<#if portal_config.id_param_name?exists>, id_param_name='${portal_config.id_param_name}' \ +where uniquename='${portal_config.uniquename}';\ +\ +delete from tmp_portal_config where uniquename in (select uniquename\ +from portal_config);\ +\ +insert into portal_config(uniquename,\ + caption,\ +-- userinfo_id,\ + print_maskeninfo_id,\ + booklet_stylesheet,\ + id_param_name)\ + select uniquename,\ + caption,\ +-- userinfo_id,\ + print_maskeninfo_id,\ + booklet_stylesheet,\ + id_param_name\ + from tmp_portal_config;\ + \ +\ +--Zuordnung zu Layout:\ +\ +insert into tmp_portal_config2layout(portal_config_id,\ + portal_layout_id,\ + userinfo_id,\ + active)\ + select C.tid,\ + L.tid as layout_id,\ + null::integer,\ + 1 as active\ + from portal_config C, portal_layout L\ + where L.uniquename='${portal_config.layout_uniquename}'\ + and C.uniquename='${portal_config.uniquename}';\ +\ +delete from portal_config2layout\ +where (portal_config_id,portal_layout_id) in (\ +select portal_config_id,portal_layout_id\ +from tmp_portal_config2layout);\ +\ +insert into portal_config2layout(portal_config_id,\ + portal_layout_id,\ + userinfo_id,\ + active)\ + select portal_config_id,\ + portal_layout_id,\ + userinfo_id,\ + active\ + from tmp_portal_config2layout;\ + \ + \ +<#foreach elem in portal_elements>\ +insert into tmp_portal_element(\ +element_type_id,\ + caption,\ + uniquename,\ + onclick_event,\ + description,\ + open_modal_card_detail,\ + src_url,\ + content_static,\ + content_maskeninfo_id,\ + content_chart_uniquename,\ + content_rpta_column_layout_uniquename,\ + content_tablestylesheet,\ + link_maskeninfo_id,\ + link_chart_uniquename,\ + link_tablestylesheet,\ + active)\ +select T.tid,\ +'${elem.caption}',\ +'${elem.uniquename}',\ +<#if elem.onclick_event?exists> '${elem.onclick_event}' <#else> null::varchar(255),\ +<#if elem.description?exists> '${elem.description}' <#else> null::varchar(255),\ +<#if elem.open_modal_card_detail?exists> 1 <#else> 0,\ +<#if elem.src_url?exists> '${elem.src_url}' <#else> null::varchar(255),\ +<#if elem.content_static?exists> '${elem.content_static?replace("'","''")}' <#else> null::varchar(255),\ +<#if elem.content_maskeninfo_id?exists> ${elem.content_maskeninfo_id} <#else> null::integer,\ +<#if elem.content_chart_uniquename?exists> '${elem.content_chart_uniquename}' <#else> null::varchar(255),\ +<#if elem.content_rpta_column_layout_uniquename?exists> '${elem.content_rpta_column_layout_uniquename}' <#else> null::varchar(255),\ +<#if elem.content_tablestylesheet?exists> '${elem.content_tablestylesheet}' <#else> null::varchar(255),\ +<#if elem.link_maskeninfo_id?exists> link_maskeninfo_id <#else> null::integer,\ +<#if elem.link_chart_uniquename?exists> '${elem.link_chart_uniquename}' <#else> null::varchar(255),\ +<#if elem.link_tablestylesheet?exists> '${elem.link_tablestylesheet}' <#else> null::varchar(255),\ +1 as active\ +from portal_element_type T\ +where T.uniquename= '${elem.element_type}';\ +\ +\ +\ +\ +update portal_element E set caption=T.caption,\ +element_type_id=T.element_type_id,\ + onclick_event=T.onclick_event,\ + description=T.description,\ + open_modal_card_detail=T.open_modal_card_detail,\ + src_url=T.src_url,\ + content_static=T.content_static,\ + content_maskeninfo_id=T.content_maskeninfo_id,\ + content_chart_uniquename=T.content_chart_uniquename,\ + content_rpta_column_layout_uniquename=T.content_rpta_column_layout_uniquename,\ + content_tablestylesheet=T.content_tablestylesheet,\ + link_maskeninfo_id=T.link_maskeninfo_id,\ + link_chart_uniquename=T.link_chart_uniquename,\ + link_tablestylesheet=T.link_tablestylesheet,\ + active=T.active\ +from tmp_portal_element T\ + where T.uniquename=E.uniquename\ + and E.uniquename in (select T2.uniquename from tmp_portal_element T2);\ +\ +delete from tmp_portal_element where uniquename in (select uniquename\ +from portal_element);\ +\ +insert into portal_element(\ +element_type_id,\ + caption,\ + uniquename,\ + onclick_event,\ + description,\ + open_modal_card_detail,\ + src_url,\ + content_static,\ + content_maskeninfo_id,\ + content_chart_uniquename,\ + content_rpta_column_layout_uniquename,\ + content_tablestylesheet,\ + link_maskeninfo_id,\ + link_chart_uniquename,\ + link_tablestylesheet,\ + active)\ + select element_type_id,\ + caption,\ + uniquename,\ + onclick_event,\ + description,\ + open_modal_card_detail,\ + src_url,\ + content_static,\ + content_maskeninfo_id,\ + content_chart_uniquename,\ + content_rpta_column_layout_uniquename,\ + content_tablestylesheet,\ + link_maskeninfo_id,\ + link_chart_uniquename,\ + link_tablestylesheet,\ + active\ + from tmp_portal_element;\ +\ + \ + delete from portal_config2element where \ + portal_config_id =(select T.tid from portal_config T where T.uniquename='${portal_config.uniquename}');\ +\ + <#assign sortnr=0 />\ +<#foreach elem in portal_elements>\ + <#assign sortnr=sortnr +1 />\ + \ + insert into portal_config2element(\ + portal_config_id,\ + portal_element_id,\ + --portal_config_tab_id,\ + sortnr,\ + element_role_id,\ + is_foldable,\ + is_maximizable,\ + min_width,\ + height,\ + active)\ +select T.tid as portal_config_id,\ + E.tid as portal_element_id,\ + --portal_config_tab_id,\ + ${sortnr} as sortnr,\ + R.tid as element_role_id,\ + <#if elem.is_foldable?exists> 1 <#else> 0 as is_foldable,\ + <#if elem.is_maximizable?exists> 1 <#else> 0 as is_maximizable,\ + <#if elem.min_width?exists> ${elem.min_width} <#else> null::integer as min_width,\ + <#if elem.height?exists> ${elem.height} <#else> null::integer as height,\ + 1 as active\ + from portal_config T, portal_element_role R, portal_element E\ + where T.uniquename='${portal_config.uniquename}'\ + and R.uniquename='${elem.element_role}'\ + and E.uniquename='${elem.uniquename}';\ + \ +\ +\ +--TABS:\ +<#assign sortnr=0 />\ +\ +<#foreach elem in portal_tabs>\ +<#assign sortnr=sortnr+1 />\ +insert into tmp_portal_config_tab(\ +portal_config_id,\ + caption,\ +-- print_maskeninfo_id,\ +-- booklet_stylesheet,\ + sortnr,\ + tab_id,\ + target_url,\ + target_window,\ + target_div)\ +select T.tid,\ +'${elem.caption}',\ +${sortnr},\ +'${elem.tab_id}',\ +<#if elem.target_url?exists> '${elem.target_url}' <#else> null::varchar(255),\ +<#if portal_config.tab_target_window?exists> '${portal_config.tab_target_window}' <#else> null::varchar(255),\ +<#if portal_config.target_div?exists> '${portal_config.target_div}' <#else> null::varchar(255)\ +\ +from portal_config T\ +where T.uniquename= '${portal_config.uniquename}';\ +\ +\ +\ +\ +delete from portal_config_tab where \ + portal_config_id =(select T.tid from portal_config T where T.uniquename='${portal_config.uniquename}');\ +\ + insert into portal_config_tab(\ +portal_config_id,\ + caption,\ +-- print_maskeninfo_id,\ +-- booklet_stylesheet,\ + sortnr,\ + tab_id,\ + target_url,\ + target_window,\ + target_div)\ + select portal_config_id,\ + caption,\ +-- print_maskeninfo_id,\ +-- booklet_stylesheet,\ + sortnr,\ + tab_id,\ + target_url,\ + target_window,\ + target_div\ + from tmp_portal_config_tab;\ + \ +\ +drop table tmp_portal_config;\ +drop table tmp_portal_element;\ +drop table tmp_portal_config2element;\ +drop table tmp_portal_config2layout;\ +drop table tmp_portal_config_tab;\ + ^Makros des Portal-Moduls^^1^ diff --git a/src-modules/module/portal/schluesseltabellen/fm_templates_fuellen.sql b/src-modules/module/portal/schluesseltabellen/fm_templates_fuellen.sql new file mode 100644 index 0000000..17b375a --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/fm_templates_fuellen.sql @@ -0,0 +1,15 @@ + +delete from fm_templates where id in (select id from tmp_templates); + +insert into fm_templates(id, + content, + description, + comment, + version) select id, + content, + description, + comment, + version from tmp_templates; + +drop table tmp_templates; + diff --git a/src-modules/module/portal/schluesseltabellen/fm_templates_unload.x b/src-modules/module/portal/schluesseltabellen/fm_templates_unload.x new file mode 100755 index 0000000..5d4eb2b --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/fm_templates_unload.x @@ -0,0 +1,11 @@ +#!/bin/bash +#löscht alle nicht-kern-templates und entlädt die Tabelle sortiert ins Rohdaten Verzeichnis (für git-diff). + + + + +SX_CLIENT=jdbc +export SX_CLIENT +#man_catalogue +DOQUERY "select * from fm_templates where id in ('PORTAL-Makros')" false $DBDELIMITER ./fm_templates.unl txt + diff --git a/src-modules/module/portal/schluesseltabellen/fm_templates_update.x b/src-modules/module/portal/schluesseltabellen/fm_templates_update.x new file mode 100755 index 0000000..e2bc6db --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/fm_templates_update.x @@ -0,0 +1,17 @@ +#!/bin/bash + +DOQUERY "create table tmp_templates(tid integer, + id char(200) not null, +content text not null, +description char(200) , +comment char(200) , +version integer default 1 + +) +;" + +sx_auto_upload_table.x tmp_templates ./fm_templates.unl + +DOSQL fm_templates_fuellen.sql + + diff --git a/src-modules/module/portal/schluesseltabellen/portal_config_fuellen_gang.sql b/src-modules/module/portal/schluesseltabellen/portal_config_fuellen_gang.sql new file mode 100644 index 0000000..cfb2965 --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/portal_config_fuellen_gang.sql @@ -0,0 +1,64 @@ +--freemarker template +<#include "PORTAL-Makros"/> + +<#assign portal_config = +{"uniquename":"portal_config_gang_bearbeiten", +"caption":"Studiengang bearbeiten", +"print_maskeninfo_id":"25100", +"layout_uniquename":"COLUMNS_2", +"id_param_name":"tid", +"tab_target_window":"parent.editPane"} + /> + + +<#assign portal_elements = [ +{"element_type":"STATIC_HTML", "caption":"GANG Kopfzeile", +"uniquename":"GANG_HEADER", "src_url":"", + "content_static":"GANG Studiengangsverwaltung", + "element_role":"HEADER"}, + {"element_type":"STATIC_HTML", "caption":"GANG Menue", +"uniquename":"GANG_MENU", "src_url":"../../edit/gang/menue.jsp", + "content_static":"menü", + "element_role":"CONTENT", + "min_width":"4", + "height":"400"}, + {"element_type":"IFRAME", "caption":"GANG Content", +"uniquename":"GANG_CONTENT", "src_url":"../../edit/gang/studiengang_edit.jsp", + "content_static":"Inhalt", + "element_role":"CONTENT", + "min_width":"8", + "height":"400"}, +{"element_type":"STATIC_HTML", "caption":"GANG Fusszeile", +"uniquename":"SX_FOOTER", "src_url":"../../edit/gang/bottombar.htm", +"content_static":" +", + "element_role":"FOOTER"} +] /> + + +<#assign portal_tabs = [ +{"caption":"Studiengang", "tab_id":"Linkstudiengang", "target_url":"../../edit/gang/studiengang_edit.jsp"}, +{"caption":"Zuordnung", "tab_id":"Linkzuordnung", "target_url":"../../edit/gang/zuordnung_edit.jsp"}, +{"caption":"Allgemein", "tab_id":"Linkallgemein", "target_url":"../../edit/gang/allgemein_edit.jsp"}, +{"caption":"Bes. Studienform", "tab_id":"Linkstudienformen", "target_url":"../../edit/gang/studienformen_edit.jsp"}, +{"caption":"Zulassung", "tab_id":"Linkzulassung", "target_url":"../../edit/gang/zulassung_edit.jsp"}, +{"caption":"Zulassungszahlen", "tab_id":"Linkzulassungszahlen", "target_url":"../../edit/gang/zulassungszahlen_edit.jsp"}, +{"caption":"Kapazität", "tab_id":"Linkkapazitaet", "target_url":"../../edit/gang/kapazitaet_edit.jsp"}, +{"caption":"Prüfungsrechtliches", "tab_id":"Linkpruefung", "target_url":"../../edit/gang/pruefung_edit.jsp"}, +{"caption":"Initialisierung", "tab_id":"Linkinitialisierung", "target_url":"../../edit/gang/initialisierung_edit.jsp"}, +{"caption":"Akkreditierung", "tab_id":"Linkakkreditierung", "target_url":"../../edit/gang/akkreditierung_edit.jsp"}, +{"caption":"Qualitätssicherung", "tab_id":"Linkevaluation", "target_url":"../../edit/gang/studiengang_edit.jsp"}, +{"caption":"Einstellung", "tab_id":"Linkabwicklung", "target_url":"../../edit/gang/abwicklung_edit.jsp"} +] /> + +<@PORTAL_FUELLEN portal_config=portal_config portal_elements=portal_elements portal_tabs=portal_tabs /> + + + + + diff --git a/src-modules/module/portal/schluesseltabellen/portal_config_fuellen_sample_superx.sql b/src-modules/module/portal/schluesseltabellen/portal_config_fuellen_sample_superx.sql new file mode 100644 index 0000000..dc611ad --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/portal_config_fuellen_sample_superx.sql @@ -0,0 +1,60 @@ +--freemarker template +<#include "PORTAL-Makros"/> + +<#assign portal_config = +{"uniquename":"portal_config_sample_superx", +"caption":"SuperX-Beispielportal", +"print_maskeninfo_id":"25100", +"layout_uniquename":"SUPERX_CARD", +"id_param_name":"", +"tab_target_window":""} + /> + + +<#assign portal_elements = [ +{"element_type":"STATIC_HTML", "caption":"SuperX Kopfzeile", +"uniquename":"SX_HEADER", "src_url":"", + "content_static":"SuperX-Beispielportal Header", + "element_role":"HEADER", + "min_width":"100", + "height":"40"}, +{"element_type":"STATIC_HTML", "caption":"SuperX Content Beispielinhalt", +"uniquename":"SX_CONTENT1", "src_url":"", + "content_static":"Dieses Portal", + "element_role":"CONTENT", + "min_width":"33", + "height":"60"}, +{"element_type":"STATIC_HTML", "caption":"SuperX Content Beispielinhalt 2", +"uniquename":"SX_CONTENT2", "src_url":"", + "content_static":"ist nur", + "element_role":"CONTENT", + "min_width":"33", + "height":"60"}, +{"element_type":"STATIC_HTML", "caption":"SuperX Content Beispielinhalt 3", +"uniquename":"SX_CONTENT3", "src_url":"", + "content_static":"ein Muster", + "element_role":"CONTENT", + "min_width":"33", + "height":"60"}, +{"element_type":"STATIC_HTML", "caption":"SuperX Fusszeile", +"uniquename":"SX_FOOTER", +"content_static":" +", + "element_role":"FOOTER", + "min_width":"100", + "height":"40"} +] /> + + +<#assign portal_tabs = [ +] /> + +<@PORTAL_FUELLEN portal_config=portal_config portal_elements=portal_elements portal_tabs=portal_tabs /> + + + diff --git a/src-modules/module/portal/schluesseltabellen/portal_element_role.unl b/src-modules/module/portal/schluesseltabellen/portal_element_role.unl new file mode 100644 index 0000000..1b52fe9 --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/portal_element_role.unl @@ -0,0 +1,8 @@ +1^CONTENT^Inhalt^1^ +2^FOOTER^Fusszeile^0^ +3^HEADER^Kopfzeile^0^ +4^TAB_BOTTOM^Reiter (unten)^0^ +5^TAB_TOP^Reiter (oben)^0^ +6^SIDEBAR_LEFT^Sidebar-links^0^ +7^SIDEBAR_RIGHT^Sidebar-rechts^0^ +8^MENU^Menüzeile^1^ diff --git a/src-modules/module/portal/schluesseltabellen/portal_element_type.unl b/src-modules/module/portal/schluesseltabellen/portal_element_type.unl new file mode 100644 index 0000000..002a3e7 --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/portal_element_type.unl @@ -0,0 +1,6 @@ +1^STATIC_HTML^Statisches HTML^ +2^STATIC_WIKI^Statisches Wiki^ +3^MASKE^Maske^ +4^DBFORM^DB-Form^ +5^VIZ_CHART^VIZ-Grafik^ +6^IFRAME^Inline-Frame^ diff --git a/src-modules/module/portal/schluesseltabellen/portal_layout_fuellen.sql b/src-modules/module/portal/schluesseltabellen/portal_layout_fuellen.sql new file mode 100644 index 0000000..fdf631b --- /dev/null +++ b/src-modules/module/portal/schluesseltabellen/portal_layout_fuellen.sql @@ -0,0 +1,82 @@ +--freemarker template +<#assign portal_layouts = [ +{"uniquename":"FRAMESET_GANG", +"caption":"GANG-Portal mit Frame-Layout"}, +{"uniquename":"CARD_V", +"caption":"Cards (vertikal)"}, +{"uniquename":"FLEXBOX_GRID_3COLS", +"caption":"Flexbox-Grid (dreispaltig)", +"fixed_grid_column_count","3"}, +{"uniquename":"FLEXBOX_GRID_2COLS", +"caption":"Flexbox-Grid (zweispaltig)", +"fixed_grid_column_count","2"}, +{"uniquename":"FLEXBOX_GRID", +"caption":"Flexbox-Grid (responsiv)"}, +{"uniquename":"COLUMNS_2", +"caption":"Inhalt zweispaltig", +"fixed_grid_column_count","2"} + +] + /> + + create temp table tmp_portal_layout( + tid SERIAL not null, +caption VARCHAR(255) , +uniquename VARCHAR(255) , +grid_type VARCHAR(255) , +fixed_grid_column_count SMALLINT, +css_url VARCHAR(255) , +js_url VARCHAR(255) , +onload_handler VARCHAR(255) +) +; +<#foreach elem in portal_layouts> +insert into tmp_portal_layout(caption, + uniquename, + grid_type, + fixed_grid_column_count, + css_url, + js_url, + onload_handler) + select + '${elem.caption}', +'${elem.uniquename}', +<#if elem.grid_type?exists> '${elem.grid_type}' <#else> null::varchar(255), +<#if elem.fixed_grid_column_count?exists> ${elem.fixed_grid_column_count} <#else> null::integer, +<#if elem.css_url?exists> '${elem.css_url}' <#else> null::varchar(255), +<#if elem.js_url?exists> '${elem.js_url}' <#else> null::varchar(255), +<#if elem.onload_handler?exists> '${elem.onload_handler}' <#else> null::varchar(255) +from xdummy; + + + +update portal_layout L set caption=T.caption, +grid_type=T.grid_type, + fixed_grid_column_count=T.fixed_grid_column_count, + css_url=T.css_url, + js_url=T.js_url, + onload_handler=T.onload_handler +from tmp_portal_layout T + where L.uniquename in (select T2.uniquename from tmp_portal_layout T2); + +delete from tmp_portal_layout where uniquename in (select uniquename +from portal_layout); + +insert into portal_layout(caption, + uniquename, + grid_type, + fixed_grid_column_count, + css_url, + js_url, + onload_handler) + select caption, + uniquename, + grid_type, + fixed_grid_column_count, + css_url, + js_url, + onload_handler +from tmp_portal_layout; + +drop table tmp_portal_layout; + diff --git a/src/de/superx/portal/PortalConfig.java b/src/de/superx/portal/PortalConfig.java new file mode 100644 index 0000000..1ee36a6 --- /dev/null +++ b/src/de/superx/portal/PortalConfig.java @@ -0,0 +1,123 @@ +package de.superx.portal; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.LinkedList; +import java.util.List; + +public class PortalConfig { + public PortalConfig(String uniquename) { + super(); + this.uniquename = uniquename; + } + List elementList = new LinkedList(); + + String uniquename; + int configTid; + String configCaption; + String idParamName; + String layoutUniquename; + public String PortalElementsSql; + public String PortalConfigSql; + + public int getConfigTid() { + return configTid; + } + public void setConfigTid(int configTid) { + this.configTid = configTid; + } + public String getConfigCaption() { + return configCaption; + } + public void setConfigCaption(String configCaption) { + this.configCaption = configCaption; + } + public String getIdParamName() { + return idParamName; + } + public void setIdParamName(String idParamName) { + this.idParamName = idParamName; + } + public String getLayoutUniquename() { + return layoutUniquename; + } + public void setLayoutUniquename(String layoutUniquename) { + this.layoutUniquename = layoutUniquename; + } + public String getPortalConfigSql() { + return PortalConfigSql; + } + public void setPortalConfigSql(String portletLayoutUniquename ) { + String sql="select C.tid as config_tid,C.caption as config_caption,C.id_param_name,L.uniquename as layout_uniquename"; + sql+=" from portal_config C, portal_config2layout CL, portal_layout L"; + sql+=" where C.uniquename='"+this.uniquename+"'"; + sql+=" and C.tid=CL.portal_config_id and L.tid=CL.portal_layout_id"; + sql+= " and L.uniquename='"+portletLayoutUniquename+"'"; + + PortalConfigSql = sql; + } + public void setPortalConfigAttributesFromSQL(ResultSet rs) throws SQLException + { + while (rs.next()) + { + if(rs.getObject(1) !=null) + { + configTid=(int) rs.getObject(1); + configCaption=rs.getString(2); + idParamName=rs.getString(3); + layoutUniquename=rs.getString(4); + } + } + } + public String getPortalElementsSql() { + String sql="select T.uniquename as element_type_uniquename,R.uniquename as element_role_uniquename,"; + sql+="E.content_static,E.src_url,"; + sql+="E.caption as element_caption,E.uniquename as element_uniquename,"; + sql+= "EC.tid as portal_element2config_tid,"; + sql+= "EC.min_width,EC.height,EC.sortnr,EC.is_foldable,EC.is_maximizable"; + sql+=" from portal_element_type T, portal_config2element EC, portal_config C,portal_element_role R, portal_element E"; + sql+=" where T.tid=E.element_type_id and C.tid=EC.portal_config_id and R.tid=EC.element_role_id "; + sql+=" and E.tid=EC.portal_element_id"; + sql+=" and E.active=1 and EC.active=1"; + sql+=" and C.uniquename='"+this.uniquename+"'"; + sql+=" order by EC.sortnr,E.caption"; + return sql; + } + public void setPortalConfigElementsFromSQL(ResultSet rs) throws SQLException + { + while (rs.next()) + { + if(rs.getObject(1) !=null && rs.getObject(1) != null) + { + PortalElement myElem=new PortalElement(rs.getString(6)); + myElem.setElementTypeUniquename(rs.getString(1)); + myElem.setElementRoleUniquename(rs.getString(2)); + myElem.setContentStatic(rs.getString(3)); + myElem.setSrcUrl(rs.getString(4)); + myElem.setElementCaption(rs.getString(5)); + myElem.setMinWidth(getIntFromRs(rs.getObject(8),100)); + myElem.setHeight(getIntFromRs(rs.getObject(9),80)); + myElem.setSortnr(getIntFromRs(rs.getObject(10),0)); + myElem.setFoldable( (rs.getObject(11)==null || getIntFromRs(rs.getObject(11),0)==0 ?false:true)); + myElem.setIs_maximizable( (rs.getObject(12)==null || getIntFromRs(rs.getObject(12),0)==0 ?false:true)); + + elementList.add(myElem); + } + } + } + public List getElementList() + { + return elementList; + } + public static int getIntFromRs(Object o,int defaultWert) + { + int ret=defaultWert; + if(o!=null && o instanceof Integer) + { + ret=(int) o; + } + + return ret; + } + +} diff --git a/src/de/superx/portal/PortalElement.java b/src/de/superx/portal/PortalElement.java new file mode 100644 index 0000000..cc22e2a --- /dev/null +++ b/src/de/superx/portal/PortalElement.java @@ -0,0 +1,96 @@ +package de.superx.portal; + +public class PortalElement { + public PortalElement(String elementUniquename) { + super(); + this.elementUniquename = elementUniquename; + } + String elementRoleUniquename; + String elementCaption; + String elementUniquename; + String contentStatic; + String srcUrl; + int portalElement2configTid; + int minWidth; + int height; + int sortnr; + boolean isFoldable; + boolean is_maximizable; + String elementTypeUniquename; + + public String getElementTypeUniquename() { + return elementTypeUniquename; + } + public void setElementTypeUniquename(String elementTypeUniquename) { + this.elementTypeUniquename = elementTypeUniquename; + } + public String getElementRoleUniquename() { + return elementRoleUniquename; + } + public void setElementRoleUniquename(String elementRoleUniquename) { + this.elementRoleUniquename = elementRoleUniquename; + } + public String getElementCaption() { + return elementCaption; + } + public void setElementCaption(String elementCaption) { + this.elementCaption = elementCaption; + } + public String getElementUniquename() { + return elementUniquename; + } + public void setElementUniquename(String elementUniquename) { + this.elementUniquename = elementUniquename; + } + public String getContentStatic() { + return contentStatic; + } + public void setContentStatic(String contentStatic) { + this.contentStatic = contentStatic; + } + public String getSrcUrl() { + return srcUrl; + } + public void setSrcUrl(String srcUrl) { + this.srcUrl = srcUrl; + } + public int getPortalElement2configTid() { + return portalElement2configTid; + } + public void setPortalElement2configTid(int portalElement2configTid) { + this.portalElement2configTid = portalElement2configTid; + } + public int getMinWidth() { + return minWidth; + } + public void setMinWidth(int minWidth) { + this.minWidth = minWidth; + } + public int getHeight() { + return height; + } + public void setHeight(int height) { + this.height = height; + } + public int getSortnr() { + return sortnr; + } + public void setSortnr(int sortnr) { + this.sortnr = sortnr; + } + public boolean isFoldable() { + return isFoldable; + } + public void setFoldable(boolean isFoldable) { + this.isFoldable = isFoldable; + } + public boolean isMaximizable() { + return is_maximizable; + } + public void setIs_maximizable(boolean is_maximizable) { + this.is_maximizable = is_maximizable; + } + + + +} diff --git a/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_portal.sam b/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_portal.sam new file mode 100644 index 0000000..334e36e --- /dev/null +++ b/superx/WEB-INF/conf/edustore/db/bin/SQL_ENV_portal.sam @@ -0,0 +1,16 @@ +#Beispielumgebung für das PORTAL-Modul: + +#SUPERX_MODULE=$SUPERX_DIR/db/module +#SUPERX_ROHDATEN=rohdaten + +PORTAL_PFAD=$SUPERX_MODULE/portal; export PORTAL_PFAD +PORTAL_ERRORDAT=$PORTAL_PFAD/portal_update.err; export PORTAL_ERRORDAT +#Hier stehen die Rohdaten (im Unterverzeichnis unl) +PORTAL_LOAD_PFAD=$PORTAL_PFAD/$SUPERX_ROHDATEN; export PORTAL_LOAD_PFAD +PORTAL_ERRORMAIL=$ERRORMAIL; export PORTAL_ERRORMAIL +PORTAL_LOGMAIL=$LOGMAIL; export PORTAL_LOGMAIL + +PATH=$PORTAL_PFAD/bin:$PATH +export PATH + + diff --git a/superx/WEB-INF/lib/spring-context-indexer-6.2.19.jar b/superx/WEB-INF/lib/spring-context-indexer-6.2.19.jar new file mode 100644 index 0000000..6b2bbdc Binary files /dev/null and b/superx/WEB-INF/lib/spring-context-indexer-6.2.19.jar differ diff --git a/superx/WEB-INF/lib/superx-portal.jar b/superx/WEB-INF/lib/superx-portal.jar new file mode 100644 index 0000000..cb74242 Binary files /dev/null and b/superx/WEB-INF/lib/superx-portal.jar differ