From: <udi...@us...> - 2023-06-15 14:25:54
|
Revision: 1480 http://sourceforge.net/p/j-trac/code/1480 Author: udittmer Date: 2023-06-15 14:25:52 +0000 (Thu, 15 Jun 2023) Log Message: ----------- fix issues with Excel import, update site content Modified Paths: -------------- trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java trunk/jtrac/src/main/java/info/jtrac/wicket/ExcelImportPage.java trunk/jtrac/src/main/resources/messages.properties trunk/jtrac/src/main/resources/messages_cs.properties trunk/jtrac/src/main/resources/messages_de.properties trunk/jtrac/src/main/resources/messages_en.properties trunk/jtrac/src/main/resources/messages_es_MX.properties trunk/jtrac/src/main/resources/messages_no.properties trunk/jtrac/src/main/resources/messages_uk.properties trunk/jtrac/src/site/apt/index.apt trunk/jtrac/src/site/resources/template/maven-site.vm Modified: trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/java/info/jtrac/domain/ExcelFile.java 2023-06-15 14:25:52 UTC (rev 1480) @@ -525,8 +525,15 @@ if (value == null || value.trim().length() == 0) { break; } - Column column = new Column(value.trim()); - logger.debug("adding column "+value.trim()); + value = value.trim(); + Column column = new Column(value); + switch (value) { + case "summary": column.setColumnHeading(new ColumnHeading(SUMMARY)); break; + case "detail": column.setColumnHeading(new ColumnHeading(DETAIL)); break; + case "loggedBy": column.setColumnHeading(new ColumnHeading(LOGGED_BY)); break; + case "assignedTo": column.setColumnHeading(new ColumnHeading(ASSIGNED_TO)); break; + } + logger.debug("adding column '"+value+"'"); columns.add(column); col++; } Modified: trunk/jtrac/src/main/java/info/jtrac/wicket/ExcelImportPage.java =================================================================== --- trunk/jtrac/src/main/java/info/jtrac/wicket/ExcelImportPage.java 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/java/info/jtrac/wicket/ExcelImportPage.java 2023-06-15 14:25:52 UTC (rev 1480) @@ -77,7 +77,7 @@ Form uploadForm = new Form("uploadForm") { @Override public void onSubmit() { - if(fileUploadField.getFileUpload() == null) { + if (fileUploadField.getFileUpload() == null) { return; } InputStream is = null; @@ -102,13 +102,13 @@ Form form = new Form("form") { @Override public void onSubmit() { - if(action == 0) { + if (action == 0) { error(localize("excel_view.error.noActionSelected")); return; } switch(action) { case 1: // delete - if(!excelFile.isColumnSelected() && !excelFile.isRowSelected()) { + if (!excelFile.isColumnSelected() && !excelFile.isRowSelected()) { error(localize("excel_view.error.noColumnOrRowSelected")); return; } @@ -115,7 +115,7 @@ excelFile.deleteSelectedRowsAndColumns(); break; case 2: // convert to date - if(!excelFile.isColumnSelected()) { + if (!excelFile.isColumnSelected()) { error(localize("excel_view.error.noColumnSelected")); return; } @@ -122,7 +122,7 @@ excelFile.convertSelectedColumnsToDate(); break; case 3: // concatenate - if(excelFile.getSelectedColumns().size() < 2) { + if (excelFile.getSelectedColumns().size() < 2) { error(localize("excel_view.error.atLeastTwoColumns")); return; } @@ -129,7 +129,7 @@ excelFile.concatenateSelectedColumns(); break; case 4: // extract summary into new column - if(!excelFile.isColumnSelected()) { + if (!excelFile.isColumnSelected()) { error(localize("excel_view.error.noColumnSelected")); return; } @@ -136,7 +136,7 @@ excelFile.extractSummaryFromSelectedColumn(); break; case 5: // duplicate column - if(!excelFile.isColumnSelected()) { + if (!excelFile.isColumnSelected()) { error(localize("excel_view.error.noColumnSelected")); return; } @@ -143,11 +143,11 @@ excelFile.duplicateSelectedColumn(); break; case 6: // map column - if(space == null) { + if (space == null) { error(localize("excel_view.error.noSpaceSelected")); return; } - if(!excelFile.isColumnSelected()) { + if (!excelFile.isColumnSelected()) { error(localize("excel_view.error.noColumnSelected")); return; } @@ -163,19 +163,19 @@ setResponsePage(new ExcelImportRowPage(ExcelImportPage.this, rowIndex)); break; case 8: // import ! - if(space == null) { + if (space == null) { error(localize("excel_view.error.noSpaceSelected")); return; } Map<Name, String> labelsMap = BasePage.getLocalizedLabels(ExcelImportPage.this); ColumnHeading duplicate = excelFile.getDuplicatedColumnHeadings(); - if(duplicate != null) { + if (duplicate != null) { error(localize("excel_view.error.duplicateMapping", labelsMap.get(duplicate.getName()))); return; } List<ColumnHeading> unMapped = excelFile.getUnMappedColumnHeadings(); - if(unMapped.size() > 0) { - for(ColumnHeading ch : unMapped) { + if (unMapped.size() > 0) { + for (ColumnHeading ch : unMapped) { error(localize("excel_view.error.notMapped", labelsMap.get(ch.getName()))); } return; @@ -199,7 +199,7 @@ form.add(new Label("selectedSpace", new AbstractReadOnlyModel() { public Object getObject() { - if(space == null) { + if (space == null) { return localize("excel_view.noSpaceSelected"); } return space.getName() + " [" + space.getPrefixCode() + "]"; @@ -279,7 +279,7 @@ protected void populateItem(Item item) { final Column column = (Column) item.getModelObject(); - if(column.getColumnHeading() != null) { + if (column.getColumnHeading() != null) { item.add(CLASS_SELECTED); } Label label = new Label("cell", new PropertyModel(column, "label")); @@ -300,7 +300,7 @@ } protected void populateItem(Item rowItem) { - if(rowItem.getIndex() % 2 == 1) { + if (rowItem.getIndex() % 2 == 1) { rowItem.add(CLASS_ALT); } rowItem.add(new Check("check", new PropertyModel(rowItem, "index"))); Modified: trunk/jtrac/src/main/resources/messages.properties =================================================================== --- trunk/jtrac/src/main/resources/messages.properties 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/resources/messages.properties 2023-06-15 14:25:52 UTC (rev 1480) @@ -253,8 +253,8 @@ excel_view.error.noRowSelected = Please select a row excel_view.error.noColumnOrRowSelected = Please select columns / rows excel_view.error.atLeastTwoColumns = Please select at least two columns -excel_view.error.duplicateMapping = Field mapped more than once: '{0}' -excel_view.error.notMapped = Field has to be mapped: '{0}' +excel_view.error.duplicateMapping = Field mapped more than once: {0} +excel_view.error.notMapped = Field has to be mapped: {0} excel_view.error.invalidValue = Some cells have invalid data excel_view.selectSpace = Choose Space Modified: trunk/jtrac/src/main/resources/messages_cs.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_cs.properties 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/resources/messages_cs.properties 2023-06-15 14:25:52 UTC (rev 1480) @@ -219,8 +219,8 @@ excel_view.error.noRowSelected = Pros\u00EDm, vyberte \u0159adu excel_view.error.noColumnOrRowSelected = Pros\u00EDm, vyberte sloupce / \u0159ady excel_view.error.atLeastTwoColumns = Pros\u00EDm, vyberte alespo\u0148 dva sloupce -excel_view.error.duplicateMapping = Pole zmapov\u00E1no v\u00EDce ne\u017E jednou: '{0}' -excel_view.error.notMapped = Pole mus\u00ED b\u00FDt zmapov\u00E1no: '{0}' +excel_view.error.duplicateMapping = Pole zmapov\u00E1no v\u00EDce ne\u017E jednou: {0} +excel_view.error.notMapped = Pole mus\u00ED b\u00FDt zmapov\u00E1no: {0} excel_view.error.invalidValue = N\u011Bkter\u00E9 skl\u00EDpky obsahuj\u00ED \u0161patn\u00E1 data. excel_view.selectSpace = Zvol Projekt Modified: trunk/jtrac/src/main/resources/messages_de.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_de.properties 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/resources/messages_de.properties 2023-06-15 14:25:52 UTC (rev 1480) @@ -253,8 +253,8 @@ excel_view.error.noRowSelected = Bitte eine Zeile w\u00E4hlen excel_view.error.noColumnOrRowSelected = Bitte eine Zeile / Spalte w\u00E4hlen excel_view.error.atLeastTwoColumns = Bitte mindestens zwei Spalten w\u00E4hlen -excel_view.error.duplicateMapping = Das Feld wurde mehr als einmal gemappt: '{0}' -excel_view.error.notMapped = Feld muss gemappt werden: '{0}' +excel_view.error.duplicateMapping = Das Feld wurde mehr als einmal gemappt: {0} +excel_view.error.notMapped = Feld muss gemappt werden: {0} excel_view.error.invalidValue = Einige Zellen haben ung\u00FCltige Daten excel_view.selectSpace = Projekt w\u00E4hlen Modified: trunk/jtrac/src/main/resources/messages_en.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_en.properties 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/resources/messages_en.properties 2023-06-15 14:25:52 UTC (rev 1480) @@ -253,8 +253,8 @@ excel_view.error.noRowSelected = Please select a row excel_view.error.noColumnOrRowSelected = Please select columns / rows excel_view.error.atLeastTwoColumns = Please select at least two columns -excel_view.error.duplicateMapping = Field mapped more than once: '{0}' -excel_view.error.notMapped = Field has to be mapped: '{0}' +excel_view.error.duplicateMapping = Field mapped more than once: {0} +excel_view.error.notMapped = Field has to be mapped: {0} excel_view.error.invalidValue = Some cells have invalid data excel_view.selectSpace = Choose Space Modified: trunk/jtrac/src/main/resources/messages_es_MX.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_es_MX.properties 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/resources/messages_es_MX.properties 2023-06-15 14:25:52 UTC (rev 1480) @@ -59,7 +59,7 @@ excel_view.duplicateColumn=Duplicar Columna Seleccionada excel_view.editRow=Editar Datos de Rengl\xF3n Seleccionada excel_view.error.atLeastTwoColumns=Por favor seleccione al menos dos columnas -excel_view.error.duplicateMapping=Campo mapeado m\xE1s de una vez: '{0}' +excel_view.error.duplicateMapping=Campo mapeado m\xE1s de una vez: {0} excel_view.error.invalidValue=Algunas celdas tienen datos inv\xE1lidos excel_view.error.noActionSelected=Por favor seleccione una acci\xF3n a realizar excel_view.error.noColumnOrRowSelected=Por favor seleccione columnas / renglones @@ -66,7 +66,7 @@ excel_view.error.noColumnSelected=Por favor seleccione una columna excel_view.error.noRowSelected=Por favor seleccione un rengl\xF3n excel_view.error.noSpaceSelected=Por favor elija un espacio primero -excel_view.error.notMapped=Campo tiene que ser mapeado: '{0}' +excel_view.error.notMapped=Campo tiene que ser mapeado: {0} excel_view.extractFirstEighty=Extraer los Primeros 80 Caracteres a una nueva Columna excel_view.import=Importar en el Espacio Seleccionado excel_view.importSuccess=Elementos Importados Exitosamente Modified: trunk/jtrac/src/main/resources/messages_no.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_no.properties 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/resources/messages_no.properties 2023-06-15 14:25:52 UTC (rev 1480) @@ -222,8 +222,8 @@ excel_view.error.noRowSelected = Velg en rad excel_view.error.noColumnOrRowSelected = Velg kolonner/rader excel_view.error.atLeastTwoColumns = Velg minst to kolonner -excel_view.error.duplicateMapping = Feltet er brukt mer enn to ganger: '{0}' -excel_view.error.notMapped = Feltet m\u00e5 knyttes opp mot noe: '{0}' +excel_view.error.duplicateMapping = Feltet er brukt mer enn to ganger: {0} +excel_view.error.notMapped = Feltet m\u00e5 knyttes opp mot noe: {0} excel_view.error.invalidValue = Noen celler har ugyldige data excel_view.selectSpace = Velg omr\u00e5de Modified: trunk/jtrac/src/main/resources/messages_uk.properties =================================================================== --- trunk/jtrac/src/main/resources/messages_uk.properties 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/main/resources/messages_uk.properties 2023-06-15 14:25:52 UTC (rev 1480) @@ -179,8 +179,8 @@ excel_view.error.noRowSelected = \u041F\u0440\u043E\u0448\u0443 \u0432\u0438\u0431\u0440\u0430\u0442\u0438 \u0440\u044F\u0434\u043E\u043A excel_view.error.noColumnOrRowSelected = \u041F\u0440\u043E\u0448\u0443 \u0432\u0438\u0431\u0440\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438 / \u0440\u044F\u0434\u043A\u0438 excel_view.error.atLeastTwoColumns = \u041F\u0440\u043E\u0448\u0443 \u0432\u0438\u0431\u0440\u0430\u0442\u0438 \u0449\u043E\u043D\u0430\u0439\u043C\u0435\u043D\u0448\u0435 \u0434\u0432\u0430 \u0441\u0442\u043E\u0432\u043F\u0447\u0438\u043A\u0438 -excel_view.error.duplicateMapping = \u041F\u043E\u043B\u0435 '{0}' \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0435 \u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436 \u043E\u0434\u0438\u043D \u0440\u0430\u0437 -excel_view.error.notMapped = \u041F\u043E\u043B\u0435 '{0}' \u043C\u0443\u0441\u0438\u0442\u044C \u0431\u0443\u0442\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0435 +excel_view.error.duplicateMapping = \u041F\u043E\u043B\u0435 {0} \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0435 \u0431\u0456\u043B\u044C\u0448\u0435 \u043D\u0456\u0436 \u043E\u0434\u0438\u043D \u0440\u0430\u0437 +excel_view.error.notMapped = \u041F\u043E\u043B\u0435 {0} \u043C\u0443\u0441\u0438\u0442\u044C \u0431\u0443\u0442\u0438 \u0432\u0456\u0434\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0435 excel_view.error.invalidValue = \u0414\u0435\u044F\u043A\u0456 \u043A\u043B\u0456\u0442\u0438\u043D\u043A\u0438 \u043C\u0456\u0441\u0442\u044F\u0442\u044C \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0434\u0430\u043D\u0456 excel_view.selectSpace = \u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0440\u043E\u0437\u0434\u0456\u043B excel_view.selectedSpace = \u0412\u0438\u0431\u0440\u0430\u043D\u0438\u0439 \u0440\u043E\u0437\u0434\u0456\u043B Modified: trunk/jtrac/src/site/apt/index.apt =================================================================== --- trunk/jtrac/src/site/apt/index.apt 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/site/apt/index.apt 2023-06-15 14:25:52 UTC (rev 1480) @@ -1,47 +1,47 @@ - ----- - open source and customizable issue-tracking in Java - -JTrac - - JTrac is an open source and highly customizable issue-tracking web-application written in Java. - -* Features - - * Extremely easy to install - - * Unlimited project spaces per installation - - * Custom fields and drop-downs for each project - - * Customizable workflow per project - - * Field-level permissions - - * Detailed history view - - * E-mail notifications - - * File attachments - - * Full text search - - * Filter searches even by custom fields - - * Detailed dashboard view of statistics - - * Export data and search results to Excel - - * Support for anonymous browsing of projects - - * Cross-reference items to each other, e.g. 'duplicate of', 'depends on' etc. - - * Translated into 19 languages (Spanish, French, German, Russian, Japanese, Chinese and more) - - * Platform independent and various databases supported - - * Support for LDAP, Active Directory or CAS based authentication - - * Embedded database and web-app server - download and start using right away! - - Please see the {{{doc/html/features.html}feature documentation}} for more. Also see {{{http://j-trac.wiki.sourceforge.net/references}what users are saying about JTrac}}. - + ----- + open source and customizable issue-tracking in Java + +JTrac + + JTrac is an open source and highly customizable issue-tracking web-application written in Java. + +* Features + + * Extremely easy to install + + * Unlimited project spaces per installation + + * Custom fields and drop-downs for each project + + * Customizable workflow per project + + * Field-level permissions + + * Detailed history view + + * E-mail notifications + + * File attachments + + * Full text search + + * Filter searches even by custom fields + + * Detailed dashboard view of statistics + + * Export data and search results to Excel + + * Support for anonymous browsing of projects + + * Cross-reference items to each other, e.g. 'duplicate of', 'depends on' etc. + + * Translated into 19 languages (Spanish, French, German, Russian, Japanese, Chinese and more) + + * Platform independent and various databases supported + + * Support for LDAP, Active Directory or CAS based authentication + + * Embedded database and web-app server - download and start using right away! + + Please see the {{{doc/html/features.html}feature documentation}} for more. + Modified: trunk/jtrac/src/site/resources/template/maven-site.vm =================================================================== --- trunk/jtrac/src/site/resources/template/maven-site.vm 2023-06-08 09:49:27 UTC (rev 1479) +++ trunk/jtrac/src/site/resources/template/maven-site.vm 2023-06-15 14:25:52 UTC (rev 1480) @@ -1,375 +1,353 @@ -#macro ( banner $banner $id ) - #if ( $banner ) - #if( $banner.href ) - <a href="$banner.href" id="$id"> - #else - <span id="$id"> - #end - - #if( $banner.src ) - #set ( $src = $banner.src ) - #if ( ! ( $src.toLowerCase().startsWith("http") || $src.toLowerCase().startsWith("https") ) ) - #set ( $src = $PathTool.calculateLink( $src, $relativePath ) ) - #set ( $src = $src.replaceAll( "\\", "/" ) ) - #end - #if ( $banner.alt ) - #set ( $alt = $banner.alt ) - #else - #set ( $alt = "" ) - #end - <img src="$src" alt="$alt" /> - #else - $banner.name - #end - - #if( $banner.href ) - </a> - #else - </span> - #end - #end -#end - -#macro ( links $links ) - #set ( $counter = 0 ) - #foreach( $item in $links ) - #set ( $counter = $counter + 1 ) - #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) - #set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) ) - <a href="$currentItemHref">$item.name</a> - #if ( $links.size() > $counter ) - | - #end - #end -#end - -#macro ( breadcrumbs $breadcrumbs ) - #set ( $counter = 0 ) - #foreach( $item in $breadcrumbs ) - #set ( $counter = $counter + 1 ) - #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) - #set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) ) - - #if ( $currentItemHref == $alignedFileName || $currentItemHref == "" ) - $item.name - #else - <a href="$currentItemHref">$item.name</a> - #end - #if ( $breadcrumbs.size() > $counter ) - > - #end - #end -#end - -#macro ( displayTree $display $item ) - #if ( $item && $item.items && $item.items.size() > 0 ) - #foreach( $subitem in $item.items ) - #set ( $subitemHref = $PathTool.calculateLink( $subitem.href, $relativePath ) ) - #set ( $subitemHref = $subitemHref.replaceAll( "\\", "/" ) ) - - #if ( $alignedFileName == $subitemHref ) - #set ( $display = true ) - #end - - #displayTree( $display $subitem ) - #end - #end -#end - -#macro ( menuItem $item ) - #set ( $collapse = "none" ) - #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) - #set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) ) - - #if ( $item && $item.items && $item.items.size() > 0 ) - #if ( $item.collapse == false ) - #set ( $collapse = "expanded" ) - #else - ## By default collapsed - #set ( $collapse = "collapsed" ) - #end - - #set ( $display = false ) - #displayTree( $display $item ) - - #if ( $alignedFileName == $currentItemHref || $display ) - #set ( $collapse = "expanded" ) - #end - #end - <li class="$collapse"> - #if ( $item.img ) - #if ( ! ( $item.img.toLowerCase().startsWith("http") || $item.img.toLowerCase().startsWith("https") ) ) - #set ( $src = $PathTool.calculateLink( $item.img, $relativePath ) ) - #set ( $src = $item.img.replaceAll( "\\", "/" ) ) - <img src="$src"/> - #else - <img src="$item.img" align="absbottom" style="border-width: 0"/> - #end - #end - #if ( $alignedFileName == $currentItemHref ) - <strong>$item.name</strong> - #else - <a href="$currentItemHref">$item.name</a> - #end - #if ( $item && $item.items && $item.items.size() > 0 ) - #if ( $collapse == "expanded" ) - <ul> - #foreach( $subitem in $item.items ) - #menuItem( $subitem ) - #end - </ul> - #end - #end - </li> -#end - -#macro ( mainMenu $menus ) - #foreach( $menu in $menus ) - #if ( $menu.name ) - <h5>$menu.name</h5> - #end - <ul> - #foreach( $item in $menu.items ) - #menuItem( $item ) - #end - </ul> - #end -#end - -#macro ( copyright ) - #if ( $project ) - #set ( $currentYear = ${currentDate.year} + 1900 ) - - #if ( ${project.inceptionYear} && ( ${project.inceptionYear} != ${currentYear.toString()} ) ) - ${project.inceptionYear}-${currentYear} - #else - ${currentYear} - #end - - #if ( ${project.organization} && ${project.organization.name} ) - ${project.organization.name} - #end - #end -#end - -#macro ( publishDate $position $publishDate $version ) - #if ( $publishDate && $publishDate.format ) - #set ( $format = $publishDate.format ) - #else - #set ( $format = "MM/dd/yyyy" ) - #end - - $dateFormat.applyPattern( $format ) - - #set ( $dateToday = $dateFormat.format( $currentDate ) ) - - #if ( $publishDate && $publishDate.position ) - #set ( $datePosition = $publishDate.position ) - #else - #set ( $datePosition = "left" ) - #end - - #if ( $version ) - #if ( $version.position ) - #set ( $versionPosition = $version.position ) - #else - #set ( $versionPosition = "left" ) - #end - #end - - #set ( $breadcrumbs = $decoration.body.breadcrumbs ) - - #if ( $datePosition.equalsIgnoreCase( $position ) ) - #if ( ( $datePosition.equalsIgnoreCase( "right" ) ) || ( $datePosition.equalsIgnoreCase( "bottom" ) ) ) - | $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday - #if ( $versionPosition.equalsIgnoreCase( $position ) ) - | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} - #end - #elseif ( ( $datePosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $datePosition.equalsIgnoreCase( "navigation-top" ) ) ) - <div id="lastPublished"> - $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday - #if ( $versionPosition.equalsIgnoreCase( $position ) ) - | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} - #end - </div> - #elseif ( $datePosition.equalsIgnoreCase("left") ) - <div class="xleft"> - $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday - #if ( $versionPosition.equalsIgnoreCase( $position ) ) - | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} - #end - #if ( $breadcrumbs && $breadcrumbs.size() > 0 ) - | #breadcrumbs( $breadcrumbs ) - #end - </div> - #end - #elseif ( $versionPosition.equalsIgnoreCase( $position ) ) - #if ( ( $versionPosition.equalsIgnoreCase( "right" ) ) || ( $versionPosition.equalsIgnoreCase( "bottom" ) ) ) - | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} - #elseif ( ( $versionPosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $versionPosition.equalsIgnoreCase( "navigation-top" ) ) ) - <div id="lastPublished"> - $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} - </div> - #elseif ( $versionPosition.equalsIgnoreCase("left") ) - <div class="xleft"> - $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} - #if ( $breadcrumbs && $breadcrumbs.size() > 0 ) - | #breadcrumbs( $breadcrumbs ) - #end - </div> - #end - #elseif ( $position.equalsIgnoreCase( "left" ) ) - #if ( $breadcrumbs && $breadcrumbs.size() > 0 ) - <div class="xleft"> - #breadcrumbs( $breadcrumbs ) - </div> - #end - #end -#end - -#macro ( poweredByLogo $poweredBy ) - #if( $poweredBy ) - #foreach ($item in $poweredBy) - #if( $item.href ) - #set ( $href = $PathTool.calculateLink( $item.href, $relativePath ) ) - #set ( $href = $href.replaceAll( "\\", "/" ) ) - #else - #set ( $href="http://maven.apache.org/" ) - #end - - #if( $item.name ) - #set ( $name = $item.name ) - #else - #set ( $name = $i18n.getString( "site-renderer", $locale, "template.builtby" ) ) - #set ( $name = "${name} Maven" ) - #end - - #if( $item.img ) - #set ( $img = $item.img ) - #else - #set ( $img = "images/logos/maven-feather.png" ) - #end - - <a href="$href" title="$name" id="poweredBy"> - #set ( $img = $PathTool.calculateLink( $img, $relativePath ) ) - #set ( $img = $img.replaceAll( "\\", "/" ) ) - <img alt="$name" src="$img" /> - </a> - #end - #if( $poweredBy.isEmpty() ) - <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" id="poweredBy"> - <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img> - </a> - #end - #else - <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" id="poweredBy"> - <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img> - </a> - #end -#end - -<html> - <head> - <title>$title</title> - <style type="text/css" media="all"> - @import url("$relativePath/template/maven-base.css"); - @import url("$relativePath/css/maven-theme.css"); - </style> - <link rel="stylesheet" href="$relativePath/css/print.css" type="text/css" media="print" /> - <link rel="shortcut icon" type="image/x-icon" href="template/favicon.ico"/> - #foreach( $author in $authors ) - <meta name="author" content="$author" /> - #end - <meta name="verify-v1" content="otD4JR1njRiR5O87EaE14/GUQMVjC1Lg5QKBOdD+N+Y=" /> - <meta name="description" content="JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields and drop-downs. Features include customizable workflow, field level permissions, e-mail integration, file attachments and a detailed history view."/> - <meta name="keywords" content="bug tracker, issue tracker, bug tracking, issue tracking, open source, free, opensource"/> - <meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" /> - #if ( $decoration.body.head ) - #foreach( $item in $decoration.body.head.getChildren() ) - #if ( $item.name == "script" ) - $item.toUnescapedString() - #else - $item.toString() - #end - #end - #end - </head> - <body class="composite" onload="javascript:urchinTracker(document.referrer);"> - <div id="banner"> - #banner( $decoration.bannerLeft "bannerLeft" ) - #banner( $decoration.bannerRight "bannerRight" ) - <div class="clear"> - <hr/> - </div> - </div> - <div id="breadcrumbs"> - #publishDate( "left" $decoration.publishDate $decoration.version ) - <div class="xright">#links( $decoration.body.links )#publishDate( "right" $decoration.publishDate $decoration.version )</div> - <div class="clear"> - <hr/> - </div> - </div> - <div id="leftColumn"> - <div id="navcolumn"> - #publishDate( "navigation-top" $decoration.publishDate $decoration.version ) - #mainMenu( $decoration.body.menus ) - <br/> - <a href="http://wicket.apache.org/" title="Apache Wicket"> - <img src="template/wicket-logo.png" style="margin:0px 0px 15px 16px; border: 1px solid grey;"/> - </a> - <a href="http://www.springframework.org/" title="Spring"> - <img src="http://www.springframework.org/buttons/spring_80x15.png" style="margin:0px 0px 15px 16px"/> - </a> - <a href="http://www.hibernate.org/" title="Hibernate"> - <img src="template/hibernate-logo.png" style="margin:0px 0px 15px 16px; border: 1px solid grey;"/> - </a> - <a href="http://www.mortbay.org/" title="Jetty"> - <img src="template/jetty-logo.png" style="margin:0px 0px 15px 16px; border: 1px solid grey;"/> - </a> - <a href="http://hsqldb.org/" title="HSQLDB"> - <img src="template/hsqldb-logo.png" style="margin:0px 0px 15px 16px"/> - </a> - <a href="http://www.cenqua.com/fisheye" title="Perspective by Fisheye"> - <img src="http://www.cenqua.com/images/fisheyed2.gif" style="margin:0px 0px 15px 16px"/> - </a> - #publishDate( "navigation-bottom" $decoration.publishDate $decoration.version ) - </div> - </div> - <div id="bodyColumn"> - <div id="contentBox"> - $bodyContent - </div> - </div> - <div id="footer"> - <div class="xright">©#copyright()#publishDate( "bottom" $decoration.publishDate $decoration.version ) The JTrac Project</div> - <div style="padding-top:1em"><br/></div> - <div class="xright"> - <!-- start eXTReMe tracking --> - <div id="eXTReMe"><a href="http://extremetracking.com/open?login=jtrac"> - <img src="http://t1.extreme-dm.com/i.gif" style="border: 0;" - height="38" width="41" id="EXim" alt="eXTReMe Tracker" /></a> - <script type="text/javascript"><!-- - var EXlogin='jtrac' // Login - var EXvsrv='s10' // VServer - EXs=screen;EXw=EXs.width;navigator.appName!="Netscape"? - EXb=EXs.colorDepth:EXb=EXs.pixelDepth; - navigator.javaEnabled()==1?EXjv="y":EXjv="n"; - EXd=document;EXw?"":EXw="na";EXb?"":EXb="na"; - EXd.write("<img src=http://e1.extreme-dm.com", - "/"+EXvsrv+".g?login="+EXlogin+"&", - "jv="+EXjv+"&j=y&srw="+EXw+"&srb="+EXb+"&", - "l="+escape(EXd.referrer)+" height=1 width=1>");//--> - </script><noscript><div id="neXTReMe"><img height="1" width="1" alt="" - src="http://e1.extreme-dm.com/s10.g?login=jtrac&j=n&jv=n" /> - </div></noscript></div> - <!-- end eXTReMe tracking --> - </div> - </div> - <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> - </script> - <script type="text/javascript"> - _uacct = "UA-1312289-1"; - urchinTracker(); - </script> - </body> -</html> +#macro ( banner $banner $id ) + #if ( $banner ) + #if( $banner.href ) + <a href="$banner.href" id="$id"> + #else + <span id="$id"> + #end + + #if( $banner.src ) + #set ( $src = $banner.src ) + #if ( ! ( $src.toLowerCase().startsWith("http") || $src.toLowerCase().startsWith("https") ) ) + #set ( $src = $PathTool.calculateLink( $src, $relativePath ) ) + #set ( $src = $src.replaceAll( "\\", "/" ) ) + #end + #if ( $banner.alt ) + #set ( $alt = $banner.alt ) + #else + #set ( $alt = "" ) + #end + <img src="$src" alt="$alt" /> + #else + $banner.name + #end + + #if( $banner.href ) + </a> + #else + </span> + #end + #end +#end + +#macro ( links $links ) + #set ( $counter = 0 ) + #foreach( $item in $links ) + #set ( $counter = $counter + 1 ) + #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) ) + <a href="$currentItemHref">$item.name</a> + #if ( $links.size() > $counter ) + | + #end + #end +#end + +#macro ( breadcrumbs $breadcrumbs ) + #set ( $counter = 0 ) + #foreach( $item in $breadcrumbs ) + #set ( $counter = $counter + 1 ) + #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) ) + + #if ( $currentItemHref == $alignedFileName || $currentItemHref == "" ) + $item.name + #else + <a href="$currentItemHref">$item.name</a> + #end + #if ( $breadcrumbs.size() > $counter ) + > + #end + #end +#end + +#macro ( displayTree $display $item ) + #if ( $item && $item.items && $item.items.size() > 0 ) + #foreach( $subitem in $item.items ) + #set ( $subitemHref = $PathTool.calculateLink( $subitem.href, $relativePath ) ) + #set ( $subitemHref = $subitemHref.replaceAll( "\\", "/" ) ) + + #if ( $alignedFileName == $subitemHref ) + #set ( $display = true ) + #end + + #displayTree( $display $subitem ) + #end + #end +#end + +#macro ( menuItem $item ) + #set ( $collapse = "none" ) + #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) ) + + #if ( $item && $item.items && $item.items.size() > 0 ) + #if ( $item.collapse == false ) + #set ( $collapse = "expanded" ) + #else + ## By default collapsed + #set ( $collapse = "collapsed" ) + #end + + #set ( $display = false ) + #displayTree( $display $item ) + + #if ( $alignedFileName == $currentItemHref || $display ) + #set ( $collapse = "expanded" ) + #end + #end + <li class="$collapse"> + #if ( $item.img ) + #if ( ! ( $item.img.toLowerCase().startsWith("http") || $item.img.toLowerCase().startsWith("https") ) ) + #set ( $src = $PathTool.calculateLink( $item.img, $relativePath ) ) + #set ( $src = $item.img.replaceAll( "\\", "/" ) ) + <img src="$src"/> + #else + <img src="$item.img" align="absbottom" style="border-width: 0"/> + #end + #end + #if ( $alignedFileName == $currentItemHref ) + <strong>$item.name</strong> + #else + <a href="$currentItemHref">$item.name</a> + #end + #if ( $item && $item.items && $item.items.size() > 0 ) + #if ( $collapse == "expanded" ) + <ul> + #foreach( $subitem in $item.items ) + #menuItem( $subitem ) + #end + </ul> + #end + #end + </li> +#end + +#macro ( mainMenu $menus ) + #foreach( $menu in $menus ) + #if ( $menu.name ) + <h5>$menu.name</h5> + #end + <ul> + #foreach( $item in $menu.items ) + #menuItem( $item ) + #end + </ul> + #end +#end + +#macro ( copyright ) + #if ( $project ) + #set ( $currentYear = ${currentDate.year} + 1900 ) + + #if ( ${project.inceptionYear} && ( ${project.inceptionYear} != ${currentYear.toString()} ) ) + ${project.inceptionYear}-${currentYear} + #else + ${currentYear} + #end + + #if ( ${project.organization} && ${project.organization.name} ) + ${project.organization.name} + #end + #end +#end + +#macro ( publishDate $position $publishDate $version ) + #if ( $publishDate && $publishDate.format ) + #set ( $format = $publishDate.format ) + #else + #set ( $format = "MM/dd/yyyy" ) + #end + + $dateFormat.applyPattern( $format ) + + #set ( $dateToday = $dateFormat.format( $currentDate ) ) + + #if ( $publishDate && $publishDate.position ) + #set ( $datePosition = $publishDate.position ) + #else + #set ( $datePosition = "left" ) + #end + + #if ( $version ) + #if ( $version.position ) + #set ( $versionPosition = $version.position ) + #else + #set ( $versionPosition = "left" ) + #end + #end + + #set ( $breadcrumbs = $decoration.body.breadcrumbs ) + + #if ( $datePosition.equalsIgnoreCase( $position ) ) + #if ( ( $datePosition.equalsIgnoreCase( "right" ) ) || ( $datePosition.equalsIgnoreCase( "bottom" ) ) ) + | $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday + #if ( $versionPosition.equalsIgnoreCase( $position ) ) + | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} + #end + #elseif ( ( $datePosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $datePosition.equalsIgnoreCase( "navigation-top" ) ) ) + <div id="lastPublished"> + $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday + #if ( $versionPosition.equalsIgnoreCase( $position ) ) + | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} + #end + </div> + #elseif ( $datePosition.equalsIgnoreCase("left") ) + <div class="xleft"> + $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday + #if ( $versionPosition.equalsIgnoreCase( $position ) ) + | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} + #end + #if ( $breadcrumbs && $breadcrumbs.size() > 0 ) + | #breadcrumbs( $breadcrumbs ) + #end + </div> + #end + #elseif ( $versionPosition.equalsIgnoreCase( $position ) ) + #if ( ( $versionPosition.equalsIgnoreCase( "right" ) ) || ( $versionPosition.equalsIgnoreCase( "bottom" ) ) ) + | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} + #elseif ( ( $versionPosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $versionPosition.equalsIgnoreCase( "navigation-top" ) ) ) + <div id="lastPublished"> + $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} + </div> + #elseif ( $versionPosition.equalsIgnoreCase("left") ) + <div class="xleft"> + $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version} + #if ( $breadcrumbs && $breadcrumbs.size() > 0 ) + | #breadcrumbs( $breadcrumbs ) + #end + </div> + #end + #elseif ( $position.equalsIgnoreCase( "left" ) ) + #if ( $breadcrumbs && $breadcrumbs.size() > 0 ) + <div class="xleft"> + #breadcrumbs( $breadcrumbs ) + </div> + #end + #end +#end + +#macro ( poweredByLogo $poweredBy ) + #if( $poweredBy ) + #foreach ($item in $poweredBy) + #if( $item.href ) + #set ( $href = $PathTool.calculateLink( $item.href, $relativePath ) ) + #set ( $href = $href.replaceAll( "\\", "/" ) ) + #else + #set ( $href="http://maven.apache.org/" ) + #end + + #if( $item.name ) + #set ( $name = $item.name ) + #else + #set ( $name = $i18n.getString( "site-renderer", $locale, "template.builtby" ) ) + #set ( $name = "${name} Maven" ) + #end + + #if( $item.img ) + #set ( $img = $item.img ) + #else + #set ( $img = "images/logos/maven-feather.png" ) + #end + + <a href="$href" title="$name" id="poweredBy"> + #set ( $img = $PathTool.calculateLink( $img, $relativePath ) ) + #set ( $img = $img.replaceAll( "\\", "/" ) ) + <img alt="$name" src="$img" /> + </a> + #end + #if( $poweredBy.isEmpty() ) + <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" id="poweredBy"> + <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img> + </a> + #end + #else + <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" id="poweredBy"> + <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img> + </a> + #end +#end + +<html> + <head> + <title>$title</title> + <style type="text/css" media="all"> + @import url("$relativePath/template/maven-base.css"); + @import url("$relativePath/css/maven-theme.css"); + </style> + <link rel="stylesheet" href="$relativePath/css/print.css" type="text/css" media="print" /> + <link rel="shortcut icon" type="image/x-icon" href="template/favicon.ico"/> + #foreach( $author in $authors ) + <meta name="author" content="$author" /> + #end + <meta name="verify-v1" content="otD4JR1njRiR5O87EaE14/GUQMVjC1Lg5QKBOdD+N+Y=" /> + <meta name="description" content="JTrac is a generic issue-tracking web-application that can be easily customized by adding custom fields and drop-downs. Features include customizable workflow, field level permissions, e-mail integration, file attachments and a detailed history view."/> + <meta name="keywords" content="bug tracker, issue tracker, bug tracking, issue tracking, open source, free, opensource"/> + <meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" /> + #if ( $decoration.body.head ) + #foreach( $item in $decoration.body.head.getChildren() ) + #if ( $item.name == "script" ) + $item.toUnescapedString() + #else + $item.toString() + #end + #end + #end + <!-- Google tag (gtag.js) --> + <script async src="https://www.googletagmanager.com/gtag/js?id=G-FV9ZJ0SGVW"></script> + <script> + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('set', { 'anonymize_ip': true, 'force_ssl': true }); + gtag('config', 'G-FV9ZJ0SGVW'); + </script> + </head> + <body class="composite"> + <div id="banner"> + #banner( $decoration.bannerLeft "bannerLeft" ) + #banner( $decoration.bannerRight "bannerRight" ) + <div class="clear"> + <hr/> + </div> + </div> + <div id="breadcrumbs"> + #publishDate( "left" $decoration.publishDate $decoration.version ) + <div class="xright">#links( $decoration.body.links )#publishDate( "right" $decoration.publishDate $decoration.version )</div> + <div class="clear"> + <hr/> + </div> + </div> + <div id="leftColumn"> + <div id="navcolumn"> + #publishDate( "navigation-top" $decoration.publishDate $decoration.version ) + #mainMenu( $decoration.body.menus ) + <br/> + <a href="http://wicket.apache.org/" title="Apache Wicket"> + <img src="template/wicket-logo.png" style="margin:0px 0px 15px 16px; border: 1px solid grey;"/> + </a> + <a href="http://www.springframework.org/" title="Spring"> + <img src="https://docs.spring.io/images/spring.png" style="margin:0px 0px 15px 16px" width="32" height="32/> + </a> + <a href="http://www.hibernate.org/" title="Hibernate"> + <img src="template/hibernate-logo.png" style="margin:0px 0px 15px 16px; border: 1px solid grey;"/> + </a> + <a href="http://www.mortbay.org/" title="Jetty"> + <img src="template/jetty-logo.png" style="margin:0px 0px 15px 16px; border: 1px solid grey;"/> + </a> + <a href="http://hsqldb.org/" title="HSQLDB"> + <img src="template/hsqldb-logo.png" style="margin:0px 0px 15px 16px"/> + </a> + #publishDate( "navigation-bottom" $decoration.publishDate $decoration.version ) + </div> + </div> + <div id="bodyColumn"> + <div id="contentBox"> + $bodyContent + </div> + </div> + <div id="footer"> + <div class="xright">©#copyright()#publishDate( "bottom" $decoration.publishDate $decoration.version ) The JTrac Project</div> + </div> + </body> +</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |