diff --git a/migration/iD10/oracle/202208220922_IDEMPIERE-5393.sql b/migration/iD10/oracle/202208220922_IDEMPIERE-5393.sql
new file mode 100644
index 0000000000..3ffb568f46
--- /dev/null
+++ b/migration/iD10/oracle/202208220922_IDEMPIERE-5393.sql
@@ -0,0 +1,46 @@
+-- IDEMPIERE-5393
+SELECT register_migration_script('202208220922_IDEMPIERE-5393.sql') FROM dual;
+
+SET SQLBLANKLINES ON
+SET DEFINE OFF
+
+-- Aug 18, 2022, 11:13:06 AM CEST
+INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (215099,0,'Status Line',50010,'AD_StatusLine_ID',22,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2022-08-18 11:13:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-08-18 11:13:06','YYYY-MM-DD HH24:MI:SS'),100,202635,'Y','N','D','N','N','N','Y','6318c76d-e4e1-4846-a1e8-57d4c5a52df3','N',0,'N','N','N','N')
+;
+
+-- Aug 18, 2022, 11:13:15 AM CEST
+UPDATE AD_Column SET FKConstraintName='ADStatusLine_PADashboardConten', FKConstraintType='N',Updated=TO_TIMESTAMP('2022-08-18 11:13:15','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=215099
+;
+
+-- Aug 18, 2022, 11:13:15 AM CEST
+ALTER TABLE PA_DashboardContent ADD AD_StatusLine_ID NUMBER(10) DEFAULT NULL
+;
+
+-- Aug 18, 2022, 11:13:15 AM CEST
+ALTER TABLE PA_DashboardContent ADD CONSTRAINT ADStatusLine_PADashboardConten FOREIGN KEY (AD_StatusLine_ID) REFERENCES ad_statusline(ad_statusline_id) DEFERRABLE INITIALLY DEFERRED
+;
+
+-- Aug 18, 2022, 11:13:37 AM CEST
+INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (207135,'Status Line',50010,215099,'Y',22,220,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2022-08-18 11:13:37','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-08-18 11:13:37','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','b855dcfe-397a-48a7-bebc-0903f6caf14e','Y',210,2)
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207135
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=56504
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200268
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200260
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=220, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202286
+;
+
diff --git a/migration/iD10/postgresql/202208220922_IDEMPIERE-5393.sql b/migration/iD10/postgresql/202208220922_IDEMPIERE-5393.sql
new file mode 100644
index 0000000000..41ded15e6f
--- /dev/null
+++ b/migration/iD10/postgresql/202208220922_IDEMPIERE-5393.sql
@@ -0,0 +1,43 @@
+-- IDEMPIERE-5393
+SELECT register_migration_script('202208220922_IDEMPIERE-5393.sql') FROM dual;
+
+-- Aug 18, 2022, 11:13:06 AM CEST
+INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (215099,0,'Status Line',50010,'AD_StatusLine_ID',22,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2022-08-18 11:13:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-08-18 11:13:06','YYYY-MM-DD HH24:MI:SS'),100,202635,'Y','N','D','N','N','N','Y','6318c76d-e4e1-4846-a1e8-57d4c5a52df3','N',0,'N','N','N','N')
+;
+
+-- Aug 18, 2022, 11:13:15 AM CEST
+UPDATE AD_Column SET FKConstraintName='ADStatusLine_PADashboardConten', FKConstraintType='N',Updated=TO_TIMESTAMP('2022-08-18 11:13:15','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=215099
+;
+
+-- Aug 18, 2022, 11:13:15 AM CEST
+ALTER TABLE PA_DashboardContent ADD COLUMN AD_StatusLine_ID NUMERIC(10) DEFAULT NULL
+;
+
+-- Aug 18, 2022, 11:13:15 AM CEST
+ALTER TABLE PA_DashboardContent ADD CONSTRAINT ADStatusLine_PADashboardConten FOREIGN KEY (AD_StatusLine_ID) REFERENCES ad_statusline(ad_statusline_id) DEFERRABLE INITIALLY DEFERRED
+;
+
+-- Aug 18, 2022, 11:13:37 AM CEST
+INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (207135,'Status Line',50010,215099,'Y',22,220,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2022-08-18 11:13:37','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-08-18 11:13:37','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','b855dcfe-397a-48a7-bebc-0903f6caf14e','Y',210,2)
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207135
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=56504
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200268
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200260
+;
+
+-- Aug 18, 2022, 11:15:07 AM CEST
+UPDATE AD_Field SET SeqNo=220, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2022-08-18 11:15:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202286
+;
+
diff --git a/org.adempiere.base/src/org/compiere/model/I_PA_DashboardContent.java b/org.adempiere.base/src/org/compiere/model/I_PA_DashboardContent.java
index 9845acba64..e9c74a242c 100644
--- a/org.adempiere.base/src/org/compiere/model/I_PA_DashboardContent.java
+++ b/org.adempiere.base/src/org/compiere/model/I_PA_DashboardContent.java
@@ -55,8 +55,8 @@ public interface I_PA_DashboardContent
/** Column name AD_Client_ID */
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
- /** Get Client.
- * Client/Tenant for this installation.
+ /** Get Tenant.
+ * Tenant for this installation.
*/
public int getAD_Client_ID();
@@ -64,12 +64,12 @@ public interface I_PA_DashboardContent
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
/** Set Organization.
- * Organizational entity within client
+ * Organizational entity within tenant
*/
public void setAD_Org_ID (int AD_Org_ID);
/** Get Organization.
- * Organizational entity within client
+ * Organizational entity within tenant
*/
public int getAD_Org_ID();
@@ -103,6 +103,17 @@ public interface I_PA_DashboardContent
public org.compiere.model.I_AD_Role getAD_Role() throws RuntimeException;
+ /** Column name AD_StatusLine_ID */
+ public static final String COLUMNNAME_AD_StatusLine_ID = "AD_StatusLine_ID";
+
+ /** Set Status Line */
+ public void setAD_StatusLine_ID (int AD_StatusLine_ID);
+
+ /** Get Status Line */
+ public int getAD_StatusLine_ID();
+
+ public org.compiere.model.I_AD_StatusLine getAD_StatusLine() throws RuntimeException;
+
/** Column name AD_User_ID */
public static final String COLUMNNAME_AD_User_ID = "AD_User_ID";
@@ -262,15 +273,6 @@ public interface I_PA_DashboardContent
*/
public boolean isShowInDashboard();
- /** Column name IsShowinLogin */
- public static final String COLUMNNAME_IsShowinLogin = "IsShowinLogin";
-
- /** Set Show on Login */
- public void setIsShowinLogin (boolean IsShowinLogin);
-
- /** Get Show on Login */
- public boolean isShowinLogin();
-
/** Column name IsShowTitle */
public static final String COLUMNNAME_IsShowTitle = "IsShowTitle";
@@ -280,6 +282,15 @@ public interface I_PA_DashboardContent
/** Get Show Title */
public boolean isShowTitle();
+ /** Column name IsShowinLogin */
+ public static final String COLUMNNAME_IsShowinLogin = "IsShowinLogin";
+
+ /** Set Show on Login */
+ public void setIsShowinLogin (boolean IsShowinLogin);
+
+ /** Get Show on Login */
+ public boolean isShowinLogin();
+
/** Column name Line */
public static final String COLUMNNAME_Line = "Line";
@@ -380,4 +391,4 @@ public interface I_PA_DashboardContent
* URI for Dashboard Gadget
*/
public String getZulFilePath();
-}
+}
\ No newline at end of file
diff --git a/org.adempiere.base/src/org/compiere/model/X_PA_DashboardContent.java b/org.adempiere.base/src/org/compiere/model/X_PA_DashboardContent.java
index c108dbe3d7..084f7089f7 100644
--- a/org.adempiere.base/src/org/compiere/model/X_PA_DashboardContent.java
+++ b/org.adempiere.base/src/org/compiere/model/X_PA_DashboardContent.java
@@ -33,7 +33,7 @@ public class X_PA_DashboardContent extends PO implements I_PA_DashboardContent,
/**
*
*/
- private static final long serialVersionUID = 20220712L;
+ private static final long serialVersionUID = 20220818L;
/** Standard Constructor */
public X_PA_DashboardContent (Properties ctx, int PA_DashboardContent_ID, String trxName)
@@ -188,6 +188,33 @@ public class X_PA_DashboardContent extends PO implements I_PA_DashboardContent,
return ii.intValue();
}
+ public org.compiere.model.I_AD_StatusLine getAD_StatusLine() throws RuntimeException
+ {
+ return (org.compiere.model.I_AD_StatusLine)MTable.get(getCtx(), org.compiere.model.I_AD_StatusLine.Table_ID)
+ .getPO(getAD_StatusLine_ID(), get_TrxName());
+ }
+
+ /** Set Status Line.
+ @param AD_StatusLine_ID Status Line
+ */
+ public void setAD_StatusLine_ID (int AD_StatusLine_ID)
+ {
+ if (AD_StatusLine_ID < 1)
+ set_Value (COLUMNNAME_AD_StatusLine_ID, null);
+ else
+ set_Value (COLUMNNAME_AD_StatusLine_ID, Integer.valueOf(AD_StatusLine_ID));
+ }
+
+ /** Get Status Line.
+ @return Status Line */
+ public int getAD_StatusLine_ID()
+ {
+ Integer ii = (Integer)get_Value(COLUMNNAME_AD_StatusLine_ID);
+ if (ii == null)
+ return 0;
+ return ii.intValue();
+ }
+
public org.compiere.model.I_AD_User getAD_User() throws RuntimeException
{
return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_ID)
@@ -409,28 +436,6 @@ public class X_PA_DashboardContent extends PO implements I_PA_DashboardContent,
return false;
}
- /** Set Show on Login.
- @param IsShowinLogin Show on Login
- */
- public void setIsShowinLogin (boolean IsShowinLogin)
- {
- set_Value (COLUMNNAME_IsShowinLogin, Boolean.valueOf(IsShowinLogin));
- }
-
- /** Get Show on Login.
- @return Show on Login */
- public boolean isShowinLogin()
- {
- Object oo = get_Value(COLUMNNAME_IsShowinLogin);
- if (oo != null)
- {
- if (oo instanceof Boolean)
- return ((Boolean)oo).booleanValue();
- return "Y".equals(oo);
- }
- return false;
- }
-
/** Set Show Title.
@param IsShowTitle Show Title
*/
@@ -453,6 +458,28 @@ public class X_PA_DashboardContent extends PO implements I_PA_DashboardContent,
return false;
}
+ /** Set Show on Login.
+ @param IsShowinLogin Show on Login
+ */
+ public void setIsShowinLogin (boolean IsShowinLogin)
+ {
+ set_Value (COLUMNNAME_IsShowinLogin, Boolean.valueOf(IsShowinLogin));
+ }
+
+ /** Get Show on Login.
+ @return Show on Login */
+ public boolean isShowinLogin()
+ {
+ Object oo = get_Value(COLUMNNAME_IsShowinLogin);
+ if (oo != null)
+ {
+ if (oo instanceof Boolean)
+ return ((Boolean)oo).booleanValue();
+ return "Y".equals(oo);
+ }
+ return false;
+ }
+
/** Set Line No.
@param Line Unique line for this document
*/
diff --git a/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml b/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml
index e96272e9a4..61dd834e18 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml
+++ b/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml
@@ -57,6 +57,6 @@ Copyright (C) 2007 Ashley G Ramdass (ADempiere WebUI).
-
+
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java
index 62e4d09374..b53241eb3e 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java
@@ -61,6 +61,7 @@ import org.compiere.model.MPInstance;
import org.compiere.model.MPInstancePara;
import org.compiere.model.MProcess;
import org.compiere.model.MProcessPara;
+import org.compiere.model.MStatusLine;
import org.compiere.model.MSysConfig;
import org.compiere.model.PO;
import org.compiere.print.ReportEngine;
@@ -559,6 +560,19 @@ public class DashboardController implements EventListener {
});
}
+ // Status Line
+ final int AD_StatusLine_ID = dc.getAD_StatusLine_ID();
+ if(AD_StatusLine_ID > 0) {
+ MStatusLine sl = new MStatusLine(Env.getCtx(), AD_StatusLine_ID, null);
+ final Html statusLineHtml = new Html();
+ statusLineHtml.setContent(sl.parseLine(0));
+ Div div = new Div();
+ div.appendChild(statusLineHtml);
+ div.setSclass("statusline-gadget");
+ content.appendChild(div);
+ empty = false;
+ }
+
return !empty;
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/gadget.css.dsp b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/gadget.css.dsp
index 7854b64cb7..ac41007b5e 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/gadget.css.dsp
+++ b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/gadget.css.dsp
@@ -212,6 +212,10 @@
height: 100% !important;
}
+.statusline-gadget {
+ padding: 0px 10px 10px;
+}
+
.help-content
{
padding: 2px;