Merge pull request #135 from PaulLuchyn/master

Added interactive user role list, changesets refactoring
This commit is contained in:
Jeroen Baten 2016-12-12 20:25:14 +01:00 committed by GitHub
commit 2ec65fcc81
10 changed files with 314 additions and 93 deletions

View file

@ -164,7 +164,7 @@ Debian/Ubuntu
* Install requirements:: * Install requirements::
# apt-get install openjdk-7-jre postgresql postgresql-client tomcat7 libpg-java cutycapt xvfb # apt-get install openjdk-8-jre postgresql postgresql-client tomcat8 libpg-java cutycapt xvfb
* Connect to database:: * Connect to database::
@ -201,9 +201,9 @@ Debian/Ubuntu
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.4.1.war $ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.4.1.war
* Create a new file ``/etc/tomcat7/Catalina/localhost/libreplan.xml`` (file * Create a new file ``/etc/tomcat8/Catalina/localhost/libreplan.xml`` (file
name has to match with ``.war`` name) with database configuration for name has to match with ``.war`` name) with database configuration for
Tomcat 7:: Tomcat 8::
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -216,21 +216,18 @@ Debian/Ubuntu
url="jdbc:postgresql://localhost/libreplan" /> url="jdbc:postgresql://localhost/libreplan" />
</Context> </Context>
* Add next lines to Tomcat 7 policy file ``/etc/tomcat7/catalina.policy`` or ``/var/lib/tomcat7/conf`` or ``/etc/tomcat7/policy.d/03catalina.policy`` * Add next lines to Tomcat 8 policy file ``/etc/tomcat8/catalina.policy`` or ``/var/lib/tomcat8/conf`` or ``/etc/tomcat8/policy.d/03catalina.policy``
with the following content:: with the following content::
grant codeBase "file:/var/lib/tomcat7/webapps/libreplan/-" { grant codeBase "file:/var/lib/tomcat8/webapps/libreplan/-" {
permission java.security.AllPermission; permission java.security.AllPermission;
}; };
grant codeBase "file:/var/lib/tomcat7/webapps/libreplan.war" { grant codeBase "file:/var/lib/tomcat8/webapps/libreplan.war" {
permission java.security.AllPermission; permission java.security.AllPermission;
}; };
.. NOTE::
For Tomcat 6, create a ``/etc/tomcat6/policy.d/51libreplan.policy`` and replace `̀ tomcat7`` by ``tomcat6``. * Also add next lines to Tomcat 8 policy file::
* Also add next lines to Tomcat 7 policy file::
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" { grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
... ...
@ -240,21 +237,17 @@ Debian/Ubuntu
... ...
}; };
.. NOTE:: * Add link to Java JDBC driver for PostgreSQL in Tomcat8 libraries directory::
For Tomcat 6, this is the ``/etc/tomcat6/policy.d/03catalina.policy``. # ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat8/lib/
* Add link to Java JDBC driver for PostgreSQL in Tomcat6 libraries directory:: * Copy war to Tomcat 8 web applications directory::
# ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat7/lib/ # cp libreplan.war /var/lib/tomcat8/webapps/
* Copy war to Tomcat 7 web applications directory:: * Restart Tomcat 8::
# cp libreplan.war /var/lib/tomcat7/webapps/ # /etc/init.d/tomcat8 restart
* Restart Tomcat 7::
# /etc/init.d/tomcat7 restart
* Go to http://localhost:8080/libreplan/ * Go to http://localhost:8080/libreplan/
@ -269,7 +262,7 @@ openSUSE
* Install requirements:: * Install requirements::
# zypper install java-1_7_0-openjdk postgresql-server postgresql tomcat7 xorg-x11-server # zypper install java-1_8_0-openjdk postgresql-server postgresql tomcat8 xorg-x11-server
* JDBC Driver manual installation:: * JDBC Driver manual installation::
@ -324,9 +317,9 @@ openSUSE
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.4.1.war $ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.4.1.war
* Create a new file ``/etc/tomcat7/Catalina/localhost/libreplan.xml`` (file * Create a new file ``/etc/tomcat8/Catalina/localhost/libreplan.xml`` (file
name has to match with ``.war`` name) with database configuration for name has to match with ``.war`` name) with database configuration for
Tomcat 7:: Tomcat 8::
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -339,17 +332,17 @@ openSUSE
url="jdbc:postgresql://localhost/libreplan" /> url="jdbc:postgresql://localhost/libreplan" />
</Context> </Context>
* Add link to Java JDBC driver for PostgreSQL in Tomcat7 libraries directory:: * Add link to Java JDBC driver for PostgreSQL in Tomcat8 libraries directory::
# ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat7/lib/ # ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat8/lib/
* Copy war to Tomcat 7 web applications directory:: * Copy war to Tomcat 8 web applications directory::
# cp libreplan.war /srv/tomcat7/webapps/ # cp libreplan.war /srv/tomcat8/webapps/
* Restart Tomcat 7: * Restart Tomcat 8:
# /etc/init.d/tomcat7 restart # /etc/init.d/tomcat8 restart
* Go to http://localhost:8080/libreplan/ * Go to http://localhost:8080/libreplan/
@ -358,17 +351,17 @@ Microsoft Windows
Instructions: Instructions:
* Download and install latest Java Runtime Environment 7uXX (JRE7uXX):: * Download and install latest Java Runtime Environment 8uXX (JRE8uXX)::
# http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html # http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
* Download and install latest PostgreSQL database:: * Download and install latest PostgreSQL database::
# http://www.enterprisedb.com/products-services-training/pgdownload#windows # http://www.enterprisedb.com/products-services-training/pgdownload#windows
* Download and install Apache Tomcat 6:: * Download and install Apache Tomcat 8::
# http://tomcat.apache.org/download-60.cgi # https://tomcat.apache.org/download-80.cgi
.. NOTE:: .. NOTE::
@ -377,7 +370,7 @@ Instructions:
* Set up JDBC41 PostgreSQL Driver:: * Set up JDBC41 PostgreSQL Driver::
# Download latest driver: https://jdbc.postgresql.org/download.html # Download latest driver: https://jdbc.postgresql.org/download.html
# Copy downloaded *.jar file to JRE location: (e.g. C:\Program Files\Java\jre7\lib\ext) # Copy downloaded *.jar file to JRE location: (e.g. C:\Program Files\Java\jre8\lib\ext)
* Download latest ``.war`` file from SourceForge.net (for PostgreSQL) and rename it to libreplan.war:: * Download latest ``.war`` file from SourceForge.net (for PostgreSQL) and rename it to libreplan.war::
@ -407,9 +400,9 @@ Instructions:
* Configure Apache Tomcat Server * Configure Apache Tomcat Server
* Put libreplan.war file to Apache Tomcat webapps folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/) * Put libreplan.war file to Apache Tomcat webapps folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 8.0/webapps/)
* Go to localhost folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 6.0/conf/Catalina/localhost/) * Go to localhost folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 8.0/conf/Catalina/localhost/)
and create there libreplan.xml file with this lines of code:: and create there libreplan.xml file with this lines of code::
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -425,7 +418,7 @@ Instructions:
* Start Apache Tomcat server * Start Apache Tomcat server
# Example location: C:/Program Files/Apache Software Foundation/Tomcat 6.0/bin/Tomcat6.exe # Example location: C:/Program Files/Apache Software Foundation/Tomcat 8.0/bin/Tomcat8.exe
If you will face SKIP_IDENTIFIER_CHECK error, refer to: If you will face SKIP_IDENTIFIER_CHECK error, refer to:
http://stackoverflow.com/questions/24546304/how-to-skip-java-reserve-keyword-identifier-check-in-tomcat http://stackoverflow.com/questions/24546304/how-to-skip-java-reserve-keyword-identifier-check-in-tomcat
@ -436,8 +429,8 @@ Logs
---- ----
Since *LibrePlan 1.1.1* log system is configured automatically creating a new Since *LibrePlan 1.1.1* log system is configured automatically creating a new
folder under ``/var/log/tomcat6/`` with ``.war`` name. For example: folder under ``/var/log/tomcat8/`` with ``.war`` name. For example:
``/var/log/tomcat6/libreplan/``. ``/var/log/tomcat8/libreplan/``.
Inside this new directory there will be two files (``libreplan.log`` and Inside this new directory there will be two files (``libreplan.log`` and
``libreplan-error.log``) that will be rotated every day. ``libreplan-error.log``) that will be rotated every day.
@ -449,8 +442,8 @@ Anyway if you want to set manually LibrePlan log path you will have to
configure ``JAVA_OPTS`` variable in your server. This variable is configured in configure ``JAVA_OPTS`` variable in your server. This variable is configured in
different files depending on the distribution: different files depending on the distribution:
* Debian or Ubuntu: ``/etc/default/tomcat6`` * Debian or Ubuntu: ``/etc/default/tomcat8``
* Fedora or openSUSE: ``/etc/tomcat6/tomcat6.conf`` * Fedora or openSUSE: ``/etc/tomcat8/tomcat8.conf``
Where you will need to add the next line:: Where you will need to add the next line::
@ -459,7 +452,7 @@ Where you will need to add the next line::
.. WARNING:: .. WARNING::
You have to be sure that the user running Tomcat (usually ``tomcat6``) has You have to be sure that the user running Tomcat (usually ``tomcat8``) has
permissions to write in the specified directory. permissions to write in the specified directory.
@ -512,8 +505,8 @@ In order to avoid this problem you need to configure properly ``JAVA_OPTS``
variable in your server. This is configured in different files depending on the variable in your server. This is configured in different files depending on the
distribution: distribution:
* Debian or Ubuntu: ``/etc/default/tomcat6`` * Debian or Ubuntu: ``/etc/default/tomcat8``
* Fedora or openSUSE: ``/etc/tomcat6/tomcat6.conf`` * Fedora or openSUSE: ``/etc/tomcat8/tomcat8.conf``
The next lines show a possible configuration to fix the memory errors (the exact The next lines show a possible configuration to fix the memory errors (the exact
values depends on the server features):: values depends on the server features)::

View file

@ -153,7 +153,7 @@ Configure project to run
Configure how to run LibrePlan in Eclipse Configure how to run LibrePlan in Eclipse
* Click *Run* and application will be available at * Click *Run* and application will be available at
http://localhost:8080/libreplan-webapp/ http://localhost:8080/
Configure Maven profiles Configure Maven profiles

View file

@ -20,7 +20,7 @@ How To Start Development With JetBrains Intellij IDEA
Download LibrePlan source code Download LibrePlan source code
------------------------------ ------------------------------
* You need to download LibrePlan_ source code to start hacking on it. You have two options: * You need to download LibrePlan source code to start hacking on it. You have two options:
a) Clone Git repository (recommended):: a) Clone Git repository (recommended)::
@ -45,7 +45,7 @@ Import LibrePlan project
* Select directory with source code of Libreplan * Select directory with source code of Libreplan
# e.g. C/Users/PC-User/IdeaProjects/libreplan # e.g. C:/Users/PC-User/IdeaProjects/libreplan
* Select *Import project from external model* > *Maven* and click *Next* * Select *Import project from external model* > *Maven* and click *Next*
@ -55,7 +55,7 @@ Import LibrePlan project
* Then leave all by default * Then leave all by default
* Then choose your JDK(SDK), 1.7 strongly preferred * Then choose your JDK(SDK), 1.8 strongly preferred
* Then define project name or leave default name * Then define project name or leave default name

View file

@ -26,7 +26,7 @@ import org.apache.commons.lang3.BooleanUtils;
/** /**
* This is a singleton that contains the compilation options passed from Maven. * This is a singleton that contains the compilation options passed from Maven.
* *
* Currently we have three options: * Currently we have four options:
* <ul> * <ul>
* <li>Enable/Disable the warning changing default password</li> * <li>Enable/Disable the warning changing default password</li>
* <li> * <li>
@ -34,6 +34,7 @@ import org.apache.commons.lang3.BooleanUtils;
* (such as wsreader, wswriter, wssubcontracting, manager, hresources, outsourcing and reports) * (such as wsreader, wswriter, wssubcontracting, manager, hresources, outsourcing and reports)
* </li> * </li>
* <li>Enable/Disable E-mail sending functionality</li> * <li>Enable/Disable E-mail sending functionality</li>
* <li>Enable/Disable "Delete all projects" button</li>
* </ul> * </ul>
* *
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com> * @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
@ -47,9 +48,11 @@ public class Configuration {
private Boolean defaultPasswordsControl; private Boolean defaultPasswordsControl;
private Boolean exampleUsersDisabled; private boolean exampleUsersDisabled;
private Boolean emailSendingEnabled; private boolean emailSendingEnabled;
private boolean deleteAllProjectsButtonDisabled;
private Configuration() { private Configuration() {
} }
@ -73,36 +76,35 @@ public class Configuration {
this.defaultPasswordsControl = defaultPasswordsControl; this.defaultPasswordsControl = defaultPasswordsControl;
} }
/**
* Returns the value of example users disabled compilation option.
*/
public static boolean isExampleUsersDisabled() { public static boolean isExampleUsersDisabled() {
return BooleanUtils.isNotFalse(singleton.getExampleUsersDisabled()); return BooleanUtils.isNotFalse(singleton.getExampleUsersDisabled());
} }
public Boolean getExampleUsersDisabled() { public boolean getExampleUsersDisabled() {
return exampleUsersDisabled; return exampleUsersDisabled;
} }
public void setExampleUsersDisabled(Boolean exampleUsersDisabled) { public void setExampleUsersDisabled(boolean exampleUsersDisabled) {
this.exampleUsersDisabled = exampleUsersDisabled; this.exampleUsersDisabled = exampleUsersDisabled;
} }
/**
* Returns the value of E-mail sending disabled compilation option.
*/
public static boolean isEmailSendingEnabled() { public static boolean isEmailSendingEnabled() {
return BooleanUtils.isNotFalse(singleton.getEmailSendingEnabled()); return BooleanUtils.isNotFalse(singleton.getEmailSendingEnabled());
} }
public Boolean getEmailSendingEnabled() { public boolean getEmailSendingEnabled() {
return emailSendingEnabled; return emailSendingEnabled;
} }
public void setEmailSendingEnabled(Boolean emailSendingEnabled) { public void setEmailSendingEnabled(boolean emailSendingEnabled) {
this.emailSendingEnabled = emailSendingEnabled; this.emailSendingEnabled = emailSendingEnabled;
} }
public boolean isDeleteAllProjectsButtonDisabled() {
return deleteAllProjectsButtonDisabled;
}
public void setDeleteAllProjectsButtonDisabled(boolean deleteAllProjectsButtonDisabled) {
this.deleteAllProjectsButtonDisabled = deleteAllProjectsButtonDisabled;
}
} }

View file

@ -177,24 +177,16 @@
</changeSet> </changeSet>
<changeSet id="add-new-column-allow_to_gather_usage_stats_enabled" author="mrego"> <changeSet id="add-new-column-allow_to_gather_usage_stats_enabled" author="mrego">
<comment>Add new column allow_to_gather_usage_stats_enabled with default value TRUE to configuration table</comment> <comment>Add new column allow_to_gather_usage_stats_enabled with default value FALSE to configuration table</comment>
<addColumn tableName="configuration"> <addColumn tableName="configuration">
<column name="allow_to_gather_usage_stats_enabled" type="BOOLEAN" /> <column name="allow_to_gather_usage_stats_enabled" type="BOOLEAN" />
</addColumn> </addColumn>
<addDefaultValue tableName="configuration" columnName="allow_to_gather_usage_stats_enabled" <addDefaultValue tableName="configuration" columnName="allow_to_gather_usage_stats_enabled"
defaultValueBoolean="TRUE" /> defaultValueBoolean="FALSE" />
<addNotNullConstraint tableName="configuration" <addNotNullConstraint tableName="configuration"
columnName="allow_to_gather_usage_stats_enabled" columnName="allow_to_gather_usage_stats_enabled"
defaultNullValue="TRUE" defaultNullValue="FALSE"
columnDataType="BOOLEAN" /> columnDataType="BOOLEAN" />
</changeSet>
<changeSet id="update allow_to_gather_usage_stats_enabled" author="bogdan/jeroen" runAlways="true">
<comment>Update allow_to_gather_usage_stats_enabled field</comment>
<update tableName="configuration">
<column name="allow_to_gather_usage_stats_enabled" valueBoolean="TRUE"/>
</update>
</changeSet> </changeSet>
<changeSet id="change-column-description-in-order_element-to-text" <changeSet id="change-column-description-in-order_element-to-text"
@ -661,4 +653,20 @@
columnDataType="BOOLEAN" /> columnDataType="BOOLEAN" />
</changeSet> </changeSet>
<changeSet id="update allow_to_gather_usage_stats_enabled" author="bogdan/jeroen" runAlways="true">
<comment>Update allow_to_gather_usage_stats_enabled field</comment>
<update tableName="configuration">
<column name="allow_to_gather_usage_stats_enabled" valueBoolean="TRUE"/>
</update>
</changeSet>
<changeSet author="pluchyn" id="change_default_value_for_gather_usage_stats">
<addDefaultValue tableName="configuration" columnName="allow_to_gather_usage_stats_enabled"
defaultValueBoolean="TRUE"/>
<addNotNullConstraint tableName="configuration"
columnName="allow_to_gather_usage_stats_enabled"
defaultNullValue="TRUE"
columnDataType="BOOLEAN" />
</changeSet>
</databaseChangeLog> </databaseChangeLog>

View file

@ -788,9 +788,9 @@
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-47"> <changeSet author="mrego" id="initial-database-creation-47">
<createTable tableName="material_assignment"> <createTable tableName="material_assigment">
<column name="id" type="BIGINT"> <column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="material_assignment_pkey"/> <constraints nullable="false" primaryKey="true" primaryKeyName="material_assigment_pkey"/>
</column> </column>
<column name="version" type="BIGINT"> <column name="version" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
@ -805,9 +805,9 @@
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-48"> <changeSet author="mrego" id="initial-database-creation-48">
<createTable tableName="material_assignment_template"> <createTable tableName="material_assigment_template">
<column name="id" type="BIGINT"> <column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="material_assignment_template_pkey"/> <constraints nullable="false" primaryKey="true" primaryKeyName="material_assigment_template_pkey"/>
</column> </column>
<column name="version" type="BIGINT"> <column name="version" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
@ -874,7 +874,7 @@
<column name="code" type="VARCHAR(255)"/> <column name="code" type="VARCHAR(255)"/>
<column name="init_date" type="DATETIME"/> <column name="init_date" type="DATETIME"/>
<column name="deadline" type="DATETIME"/> <column name="deadline" type="DATETIME"/>
<column name="last_advance_measurement_for_spreading" type="DECIMAL(19,2)"/> <column name="last_advance_meausurement_for_spreading" type="DECIMAL(19,2)"/>
<column name="dirty_last_advance_measurement_for_spreading" type="BOOLEAN"/> <column name="dirty_last_advance_measurement_for_spreading" type="BOOLEAN"/>
<column name="parent" type="BIGINT"/> <column name="parent" type="BIGINT"/>
<column name="template" type="BIGINT"/> <column name="template" type="BIGINT"/>
@ -1314,7 +1314,7 @@
<column name="constraint_date" type="DATE"/> <column name="constraint_date" type="DATE"/>
<column name="workable_days" type="INTEGER"/> <column name="workable_days" type="INTEGER"/>
<column name="allocation_direction" type="INTEGER"/> <column name="allocation_direction" type="INTEGER"/>
<column name="subcontracted_task_data_id" type="BIGINT"/> <column name="subcontrated_task_data_id" type="BIGINT"/>
<column name="priority" type="INTEGER"/> <column name="priority" type="INTEGER"/>
</createTable> </createTable>
</changeSet> </changeSet>
@ -1508,9 +1508,9 @@
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-98"> <changeSet author="mrego" id="initial-database-creation-98">
<createTable tableName="work_report_label_type_assignment"> <createTable tableName="work_report_label_type_assigment">
<column name="id" type="BIGINT"> <column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="work_report_label_type_assignment_pkey"/> <constraints nullable="false" primaryKey="true" primaryKeyName="work_report_label_type_assigment_pkey"/>
</column> </column>
<column name="version" type="BIGINT"> <column name="version" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
@ -1744,7 +1744,7 @@
<addUniqueConstraint columnNames="code" constraintName="resources_cost_category_assignment_code_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="resources_cost_category_assignment"/> <addUniqueConstraint columnNames="code" constraintName="resources_cost_category_assignment_code_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="resources_cost_category_assignment"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-152"> <changeSet author="mrego" id="initial-database-creation-152">
<addUniqueConstraint columnNames="subcontracted_task_data_id" constraintName="task_subcontracted_task_data_id_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="task"/> <addUniqueConstraint columnNames="subcontrated_task_data_id" constraintName="task_subcontrated_task_data_id_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="task"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-153"> <changeSet author="mrego" id="initial-database-creation-153">
<addUniqueConstraint columnNames="schedulingdata" constraintName="task_source_schedulingdata_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="task_source"/> <addUniqueConstraint columnNames="schedulingdata" constraintName="task_source_schedulingdata_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="task_source"/>
@ -1984,16 +1984,16 @@
<addForeignKeyConstraint baseColumnNames="unit_type" baseTableName="material" constraintName="fk11d36527f11b2d0" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="unit_type" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="unit_type" baseTableName="material" constraintName="fk11d36527f11b2d0" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="unit_type" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-232"> <changeSet author="mrego" id="initial-database-creation-232">
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment" constraintName="fkb3e9425b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assigment" constraintName="fkb3e9425b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-233"> <changeSet author="mrego" id="initial-database-creation-233">
<addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="material_assignment" constraintName="fkb3e9425efda874f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="material_assigment" constraintName="fkb3e9425efda874f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-234"> <changeSet author="mrego" id="initial-database-creation-234">
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment_template" constraintName="fk35254354b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assigment_template" constraintName="fk35254354b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-235"> <changeSet author="mrego" id="initial-database-creation-235">
<addForeignKeyConstraint baseColumnNames="order_element_template_id" baseTableName="material_assignment_template" constraintName="fk3525435419b9dfde" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element_template" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="order_element_template_id" baseTableName="material_assigment_template" constraintName="fk3525435419b9dfde" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element_template" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-236"> <changeSet author="mrego" id="initial-database-creation-236">
<addForeignKeyConstraint baseColumnNames="parent_id" baseTableName="material_category" constraintName="fk84c66516b53669f2" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material_category" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="parent_id" baseTableName="material_category" constraintName="fk84c66516b53669f2" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material_category" referencesUniqueColumn="false"/>
@ -2149,7 +2149,7 @@
<addForeignKeyConstraint baseColumnNames="external_company" baseTableName="subcontracted_task_data" constraintName="fk35bc4ed63804cfa" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="external_company" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="external_company" baseTableName="subcontracted_task_data" constraintName="fk35bc4ed63804cfa" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="external_company" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-287"> <changeSet author="mrego" id="initial-database-creation-287">
<addForeignKeyConstraint baseColumnNames="subcontracted_task_data_id" baseTableName="task" constraintName="fk3635855b595a0" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="subcontracted_task_data" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="subcontrated_task_data_id" baseTableName="task" constraintName="fk3635855b595a0" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="subcontracted_task_data" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-288"> <changeSet author="mrego" id="initial-database-creation-288">
<addForeignKeyConstraint baseColumnNames="task_element_id" baseTableName="task" constraintName="fk3635854936bb8c" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="task_element" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="task_element_id" baseTableName="task" constraintName="fk3635854936bb8c" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="task_element" referencesUniqueColumn="false"/>
@ -2209,13 +2209,13 @@
<addForeignKeyConstraint baseColumnNames="resource_id" baseTableName="work_report" constraintName="fkfd7aa62248d21790" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="resource" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="resource_id" baseTableName="work_report" constraintName="fkfd7aa62248d21790" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="resource" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-307"> <changeSet author="mrego" id="initial-database-creation-307">
<addForeignKeyConstraint baseColumnNames="label_id" baseTableName="work_report_label_type_assignment" constraintName="fkbb262920c1c2746e" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="label_id" baseTableName="work_report_label_type_assigment" constraintName="fkbb262920c1c2746e" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-308"> <changeSet author="mrego" id="initial-database-creation-308">
<addForeignKeyConstraint baseColumnNames="label_type_id" baseTableName="work_report_label_type_assignment" constraintName="fkbb262920707cd777" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label_type" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="label_type_id" baseTableName="work_report_label_type_assigment" constraintName="fkbb262920707cd777" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label_type" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-309"> <changeSet author="mrego" id="initial-database-creation-309">
<addForeignKeyConstraint baseColumnNames="work_report_type_id" baseTableName="work_report_label_type_assignment" constraintName="fkbb262920131853a1" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="work_report_type" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="work_report_type_id" baseTableName="work_report_label_type_assigment" constraintName="fkbb262920131853a1" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="work_report_type" referencesUniqueColumn="false"/>
</changeSet> </changeSet>
<changeSet author="mrego" id="initial-database-creation-310"> <changeSet author="mrego" id="initial-database-creation-310">
<addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="work_report_line" constraintName="fke2af47f1efda874f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element" referencesUniqueColumn="false"/> <addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="work_report_line" constraintName="fke2af47f1efda874f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element" referencesUniqueColumn="false"/>
@ -2255,4 +2255,146 @@
</insert> </insert>
</changeSet> </changeSet>
<changeSet author="pluchyn" id="rename_work_report_label_type_assigment">
<renameTable oldTableName="work_report_label_type_assigment"
newTableName="work_report_label_type_assignment"/>
</changeSet>
<!-- Next two changesets are renaming pkey -->
<changeSet author="pluchyn" id="drop_pkey_work_report_label_type_assignment">
<dropPrimaryKey constraintName="work_report_label_type_assigment_pkey"
tableName="work_report_label_type_assignment"/>
</changeSet>
<changeSet author="pluchyn" id="add_pkey_work_report_label_type_assignment">
<addPrimaryKey columnNames="id"
constraintName="work_report_label_type_assignment_pkey"
tableName="work_report_label_type_assignment"/>
</changeSet>
<!-- Next two changesets are renaming fkey constraints -->
<changeSet author="pluchyn" id="drop_fkey_constraints_work_report_label_type_assignment">
<dropForeignKeyConstraint baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920c1c2746e"/>
<dropForeignKeyConstraint baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920707cd777"/>
<dropForeignKeyConstraint baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920131853a1"/>
</changeSet>
<changeSet author="pluchyn" id="add_fkey_constraints_work_report_label_type_assignment">
<addForeignKeyConstraint baseColumnNames="label_id" baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920c1c2746e" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="label" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="label_type_id" baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920707cd777" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="label_type" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="work_report_type_id" baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920131853a1" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="work_report_type" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="pluchyn" id="rename_material_assigment">
<renameTable oldTableName="material_assigment"
newTableName="material_assignment"/>
</changeSet>
<!-- Next two changesets are renaming pkey -->
<changeSet author="pluchyn" id="drop_pkey_material_assignment">
<dropPrimaryKey constraintName="material_assigment_pkey"
tableName="material_assignment"/>
</changeSet>
<changeSet author="pluchyn" id="add_pkey_material_assignment">
<addPrimaryKey columnNames="id"
constraintName="material_assignment_pkey"
tableName="material_assignment"/>
</changeSet>
<changeSet author="pluchyn" id="rename_material_assigment_template">
<renameTable oldTableName="material_assigment_template"
newTableName="material_assignment_template"/>
</changeSet>
<!-- Next two changesets are renaming pkey -->
<changeSet author="pluchyn" id="drop_pkey_material_assignment_template">
<dropPrimaryKey constraintName="material_assigment_template_pkey"
tableName="material_assignment_template"/>
</changeSet>
<changeSet author="pluchyn" id="add_pkey_material_assignment_template">
<addPrimaryKey columnNames="id"
constraintName="material_assignment_template_pkey"
tableName="material_assignment_template"/>
</changeSet>
<changeSet author="pluchyn" id="rename_order_element-last_advance_meausurement_for_spreading">
<renameColumn oldColumnName="last_advance_meausurement_for_spreading"
newColumnName="last_advance_measurement_for_spreading"
columnDataType="DECIMAL(19,2)"
tableName="order_element"/>
</changeSet>
<changeSet author="pluchyn" id="rename_task-subcontrated_task_data_id">
<renameColumn oldColumnName="subcontrated_task_data_id"
newColumnName="subcontracted_task_data_id"
columnDataType="BIGINT"
tableName="task"/>
</changeSet>
<!-- Next two changesets are renaming unique constraint -->
<changeSet author="pluchyn" id="drop_unique_constraint_task">
<dropUniqueConstraint constraintName="task_subcontrated_task_data_id_key"
tableName="task"/>
</changeSet>
<changeSet author="pluchyn" id="add_unique_constraint_task">
<addUniqueConstraint columnNames="subcontracted_task_data_id"
constraintName="task_subcontracted_task_data_id_key" deferrable="false" disabled="false"
initiallyDeferred="false" tableName="task"/>
</changeSet>
<!-- Next two changesets are renaming fkey constraints -->
<changeSet author="pluchyn" id="drop_fkey-material_assignment-material_assignment_template">
<dropForeignKeyConstraint baseTableName="material_assignment" constraintName="fkb3e9425b5c68337"/>
<dropForeignKeyConstraint baseTableName="material_assignment" constraintName="fkb3e9425efda874f"/>
<dropForeignKeyConstraint baseTableName="material_assignment_template" constraintName="fk35254354b5c68337"/>
<dropForeignKeyConstraint baseTableName="material_assignment_template" constraintName="fk3525435419b9dfde"/>
</changeSet>
<changeSet author="pluchyn" id="add_fkey_material_assignment-material_assignment_template">
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment"
constraintName="fkb3e9425b5c68337" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="material" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="material_assignment"
constraintName="fkb3e9425efda874f" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="order_element" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment_template"
constraintName="fk35254354b5c68337" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="material" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="order_element_template_id"
baseTableName="material_assignment_template" constraintName="fk3525435419b9dfde"
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION"
referencedColumnNames="id" referencedTableName="order_element_template"
referencesUniqueColumn="false"/>
</changeSet>
<!-- Next two changesets are renaming fkey constraint -->
<changeSet author="pluchyn" id="drop_fkey_task">
<dropForeignKeyConstraint baseTableName="task" constraintName="fk3635855b595a0"/>
</changeSet>
<changeSet author="pluchyn" id="add_fkey_task">
<addForeignKeyConstraint baseColumnNames="subcontracted_task_data_id" baseTableName="task"
constraintName="fk3635855b595a0" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="subcontracted_task_data" referencesUniqueColumn="false"/>
</changeSet>
</databaseChangeLog> </databaseChangeLog>

View file

@ -143,6 +143,7 @@
<property name="defaultPasswordsControl" value="${default.passwordsControl}"/> <property name="defaultPasswordsControl" value="${default.passwordsControl}"/>
<property name="exampleUsersDisabled" value="${default.exampleUsersDisabled}"/> <property name="exampleUsersDisabled" value="${default.exampleUsersDisabled}"/>
<property name="emailSendingEnabled" value="${default.emailSendingEnabled}"/> <property name="emailSendingEnabled" value="${default.emailSendingEnabled}"/>
<property name="deleteAllProjectsButtonDisabled" value="${default.deleteAllProjectsButtonDisabled}"/>
</bean> </bean>
<bean id="scenarioManager" class="org.libreplan.business.scenarios.OnlyMainScenarioAwareManager"/> <bean id="scenarioManager" class="org.libreplan.business.scenarios.OnlyMainScenarioAwareManager"/>

View file

@ -24,6 +24,7 @@ package org.libreplan.web.orders;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.joda.time.LocalDate; import org.joda.time.LocalDate;
import org.libreplan.business.calendars.entities.BaseCalendar; import org.libreplan.business.calendars.entities.BaseCalendar;
import org.libreplan.business.common.Configuration;
import org.libreplan.business.common.Registry; import org.libreplan.business.common.Registry;
import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.InstanceNotFoundException;
import org.libreplan.business.externalcompanies.entities.DeadlineCommunication; import org.libreplan.business.externalcompanies.entities.DeadlineCommunication;
@ -77,7 +78,6 @@ import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.SelectEvent; import org.zkoss.zk.ui.event.SelectEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button; import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Column; import org.zkoss.zul.Column;
import org.zkoss.zul.Combobox; import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem; import org.zkoss.zul.Comboitem;
@ -293,6 +293,22 @@ public class OrderCRUDController extends GenericForwardComposer {
loadLabels(); loadLabels();
FilterUtils.writeProjectPlanningFilterChanged(false); FilterUtils.writeProjectPlanningFilterChanged(false);
createDeleteAllProjectsButton();
}
/**
* This method is needed to create "Delete all projects" button,
* that is visible only for developers on orders list page.
*/
private void createDeleteAllProjectsButton() {
if (!isDeleteAllProjectsButtonDisabled()) {
Button deleteAllProjectButton = new Button();
deleteAllProjectButton.setLabel("Delete all projects");
deleteAllProjectButton.setDisabled(isDeleteAllProjectsButtonDisabled());
deleteAllProjectButton.addEventListener(Events.ON_CLICK, event -> deleteAllProjects());
orderFilter.appendChild(deleteAllProjectButton);
}
} }
private void loadLabels() { private void loadLabels() {
@ -1798,4 +1814,29 @@ public class OrderCRUDController extends GenericForwardComposer {
return getOrder().getBudget().add(getResourcesBudget()); return getOrder().getBudget().add(getResourcesBudget());
} }
private Boolean isDeleteAllProjectsButtonDisabled() {
return Configuration.getInstance().isDeleteAllProjectsButtonDisabled();
}
/**
* Should be public!
* Used in orders/_orderFilter.zul
*/
public void deleteAllProjects() {
boolean canNotDelete = false;
for (Order order : orderModel.getOrders()) {
try {
orderModel.remove(order);
} catch (Exception ignored) {
canNotDelete = true;
continue;
}
}
if (canNotDelete) {
messagesForUser.showMessage(Level.ERROR, "Not all projects were removed") ;
}
listing.setModel(new SimpleListModel<>(orderModel.getOrders()));
listing.invalidate();
}
} }

View file

@ -158,6 +158,7 @@ public class UserCRUDController extends BaseCRUDController<User> implements IUse
List<UserRole> roles = new ArrayList<>(Arrays.asList(UserRole.values())); List<UserRole> roles = new ArrayList<>(Arrays.asList(UserRole.values()));
roles.remove(UserRole.ROLE_BOUND_USER); roles.remove(UserRole.ROLE_BOUND_USER);
// Sorting by ASC
Collections.sort(roles, (arg0, arg1) -> _(arg0.getDisplayName()).compareTo(_(arg1.getDisplayName()))); Collections.sort(roles, (arg0, arg1) -> _(arg0.getDisplayName()).compareTo(_(arg1.getDisplayName())));
for (UserRole role : roles) { for (UserRole role : roles) {
@ -202,6 +203,10 @@ public class UserCRUDController extends BaseCRUDController<User> implements IUse
if (comboItem != null) { if (comboItem != null) {
addRole(comboItem.getValue()); addRole(comboItem.getValue());
userRolesCombo.removeItemAt(comboItem.getIndex());
userRolesCombo.setSelectedItem(null);
userRolesCombo.setText(null);
} }
} }
@ -212,9 +217,34 @@ public class UserCRUDController extends BaseCRUDController<User> implements IUse
public void removeRole(UserRole role) { public void removeRole(UserRole role) {
userModel.removeRole(role); userModel.removeRole(role);
userRolesCombo.getItems().clear();
appendAllUserRolesExcept(UserRole.ROLE_BOUND_USER, userModel.getRoles(), userRolesCombo);
Util.reloadBindings(editWindow); Util.reloadBindings(editWindow);
} }
/**
* Appends the existing UserRoles to the {@link Combobox} passed.
*
* @param boundUserRole {@link UserRole#ROLE_BOUND_USER} that need to be excluded
* @param userRoles a list of {@link UserRole} that need to be excluded
* @param combo {@link Combobox} to which a list of user roles will be appended
*/
private void appendAllUserRolesExcept(UserRole boundUserRole, List<UserRole> userRoles, Combobox combo) {
List<UserRole> roles = new ArrayList<>(Arrays.asList(UserRole.values()));
roles.remove(boundUserRole);
roles.removeAll(userRoles);
// Sorting by ASC
Collections.sort(roles, (arg0, arg1) -> _(arg0.getDisplayName()).compareTo(_(arg1.getDisplayName())));
for (UserRole role : roles) {
Comboitem item = combo.appendItem(_(role.getDisplayName()));
item.setValue(role);
}
}
public List<Profile> getProfiles() { public List<Profile> getProfiles() {
return userModel.getProfiles(); return userModel.getProfiles();
} }

View file

@ -35,6 +35,7 @@
<default.passwordsControl>true</default.passwordsControl> <default.passwordsControl>true</default.passwordsControl>
<default.exampleUsersDisabled>true</default.exampleUsersDisabled> <default.exampleUsersDisabled>true</default.exampleUsersDisabled>
<default.emailSendingEnabled>true</default.emailSendingEnabled> <default.emailSendingEnabled>true</default.emailSendingEnabled>
<default.deleteAllProjectsButtonDisabled>true</default.deleteAllProjectsButtonDisabled>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -94,6 +95,9 @@
<!-- Enable example users <!-- Enable example users
(wsreader, wswriter, wssubcontracting, manager, hresources, outsourcing and reports) --> (wsreader, wswriter, wssubcontracting, manager, hresources, outsourcing and reports) -->
<default.exampleUsersDisabled>false</default.exampleUsersDisabled> <default.exampleUsersDisabled>false</default.exampleUsersDisabled>
<!-- Enabling "Delete all projects" button -->
<default.deleteAllProjectsButtonDisabled>false</default.deleteAllProjectsButtonDisabled>
</properties> </properties>
</profile> </profile>