Author: fdesbois Date: 2010-03-31 10:10:28 +0000 (Wed, 31 Mar 2010) New Revision: 399 Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/WaoPage.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ExceptionReport.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml trunk/wao-ui/src/main/webapp/Boats.tml trunk/wao-ui/src/main/webapp/Index.tml trunk/wao-ui/src/main/webapp/SamplingPlan.tml Log: Evo #1980 : readonly rights on UIs Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/WaoPage.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/WaoPage.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/WaoPage.java 2010-03-31 10:10:28 UTC (rev 399) @@ -34,6 +34,6 @@ */ public interface WaoPage { - boolean isOnlyForAdmin(); + boolean canDisplay(); } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-03-31 10:10:28 UTC (rev 399) @@ -28,12 +28,14 @@ import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.service.ServiceUser; import fr.ifremer.wao.ui.base.WaoPage; +import fr.ifremer.wao.ui.pages.Administration; import fr.ifremer.wao.ui.pages.Index; import org.apache.commons.lang.StringUtils; import org.apache.tapestry5.BindingConstants; import org.apache.tapestry5.PersistenceConstants; import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.InjectContainer; +import org.apache.tapestry5.annotations.InjectPage; import org.apache.tapestry5.annotations.Log; import org.apache.tapestry5.annotations.Parameter; import org.apache.tapestry5.annotations.Persist; @@ -199,11 +201,23 @@ } public boolean canShowPage() { - if (!currentUser.isAdmin()) { - return !page.isOnlyForAdmin(); + return page.canDisplay(); + } + + public String getAccessText() { + String text = currentUser.getUserRole().getLibelle(); + if (currentUser.getReadOnly()) { + text += " lecture seule"; } - return true; + return text; } + +// @InjectPage +// private Administration administration; +// +// public boolean canAccessAdministration() { +// return administration.canDisplay(); +// } public boolean displayBody() { return canShowPage() && !fatal; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-03-31 10:10:28 UTC (rev 399) @@ -41,6 +41,7 @@ import org.apache.tapestry5.annotations.Log; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.annotations.SessionState; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.ioc.services.TypeCoercer; @@ -61,9 +62,14 @@ @IncludeStylesheet("context:css/administration.css") public class Administration implements WaoPage { + /** + * The access to the page is only for admin with no readOnly right. + * + * @return true if the Administration page can be displayed in Layout + */ @Override - public boolean isOnlyForAdmin() { - return true; + public boolean canDisplay() { + return currentUser.isAdmin() && !currentUser.getReadOnly(); } @Inject @@ -72,6 +78,9 @@ @InjectComponent private Layout layout; + @SessionState + private WaoUser currentUser; + @Inject private ServiceUser serviceUser; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-03-31 10:10:28 UTC (rev 399) @@ -56,6 +56,16 @@ @IncludeStylesheet("context:css/boats.css") public class BoatActivityCalendar implements WaoPage { + /** + * No restriction to display this page. + * + * @return true + */ + @Override + public boolean canDisplay() { + return true; + } + @Inject private Logger log; @@ -86,11 +96,6 @@ } - @Override - public boolean isOnlyForAdmin() { - return false; - } - public void setBoat(Boat boat) { this.boat = boat; } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-03-31 10:10:28 UTC (rev 399) @@ -90,9 +90,14 @@ @IncludeStylesheet("context:css/boats.css") public class Boats extends AbstractFilteredPage implements WaoPage { + /** + * No restriction to display this page. + * + * @return true + */ @Override - public boolean isOnlyForAdmin() { - return false; + public boolean canDisplay() { + return true; } @Inject @@ -178,19 +183,6 @@ @Property private UploadedFile boatsCsvFile; - @Log - void onSuccessFromImportBoatsForm() { - //importBoatsForm.clearErrors(); - try { - int[] result = serviceBoat.importBoatCsv(boatsCsvFile.getStream()); - // Suppress persitant list of boats - boats = null; - layout.addInfo(result[0] + " navires importés dont " + result[1] + " nouveaux"); - } catch (WaoException eee) { - layout.addError(eee.getMessage()); - } - } - /** Csv file for activityCalendar import, can be a Gzip file */ @Property private UploadedFile activityCalendarsCsvFile; @@ -201,6 +193,26 @@ protected static final String GZIP_MIMETYPE = "application/x-gzip"; + public boolean canImportReferentials() { + return user.isAdmin() && !user.getReadOnly(); + } + + @Log + void onSuccessFromImportBoatsForm() { + if (canImportReferentials()) { + try { + int[] result = serviceBoat.importBoatCsv( + boatsCsvFile.getStream()); + // Suppress persitant list of boats + boats = null; + layout.addInfo(result[0] + " navires importés dont " + + result[1] + " nouveaux"); + } catch (WaoException eee) { + layout.addError(eee.getMessage()); + } + } + } + InputStream getActivityCalendarLogFile() throws FileNotFoundException { if (activityCalendarLogFile == null) { if (log.isInfoEnabled()) { @@ -248,19 +260,24 @@ } @Log - void onSuccessFromImportActivityCalendarsForm() throws WaoException, IOException { - InputStream input = activityCalendarsCsvFile.getStream(); - if (log.isDebugEnabled()) { - log.debug("Content type : " + activityCalendarsCsvFile.getContentType()); - } - if (activityCalendarsCsvFile.getContentType().equals(GZIP_MIMETYPE)) { + void onSuccessFromImportActivityCalendarsForm() + throws WaoException, IOException { + if (canImportReferentials()) { + InputStream input = activityCalendarsCsvFile.getStream(); if (log.isDebugEnabled()) { - log.debug("Gzip file"); + log.debug("Content type : " + + activityCalendarsCsvFile.getContentType()); } - input = new GZIPInputStream(input); + if (activityCalendarsCsvFile.getContentType(). + equals(GZIP_MIMETYPE)) { + if (log.isDebugEnabled()) { + log.debug("Gzip file"); + } + input = new GZIPInputStream(input); + } + serviceBoat.importActivityCalendarCsv(input); + companyBoatInfos = null; } - serviceBoat.importActivityCalendarCsv(input); - companyBoatInfos = null; } public StreamResponse onActionFromShowActivityCalendarLogFile() { @@ -509,7 +526,7 @@ } public boolean canCreateNewContactFromList() throws WaoException { - if (!user.isAdmin() && isSampleRowExists()) { + if (!user.isAdmin() && !user.getReadOnly() && isSampleRowExists()) { return boat.canCreateContact(user.getCompany()); } return false; @@ -714,7 +731,8 @@ } public boolean canCreateNewContactFromElligibleBoat() throws WaoException { - if (!user.isAdmin() && !isElligibleBoatCompanyActiveFalse()) { + if (!user.isAdmin() && !user.getReadOnly() && + !isElligibleBoatCompanyActiveFalse()) { Boat currentBoat = getBoatInfos().getBoat(); return currentBoat.canCreateContact(user.getCompany()); } @@ -728,6 +746,15 @@ /** /////////////////////// ACTIONS //////////////////////////////////// **/ + /** + * Only user with no readOnly rights can edit BoatInfos. + * + * @return true if BoatInfos can be edited + */ + public boolean canEditBoatInfos() { + return !user.getReadOnly(); + } + void onSuccess() throws WaoException { if (getBoatInfos() != null) { boatSelectedImmatriculation = getBoatInfos().getBoat().getImmatriculation(); @@ -741,12 +768,14 @@ } Block onActionFromEditBoatInfos() throws WaoException { - boatInfosEditable = true; - // WARNING :: Reset sampleRow select for edition mode, no limit for - // showing sampleRows instead of filters - getFilter().setNbMonthFinishedFromToday(null); - resetSampleRowSelect(); - getFilter().setNbMonthFinishedFromToday(-1); + if (canEditBoatInfos()) { + boatInfosEditable = true; + // WARNING :: Reset sampleRow select for edition mode, no limit for + // showing sampleRows instead of filters + getFilter().setNbMonthFinishedFromToday(null); + resetSampleRowSelect(); + getFilter().setNbMonthFinishedFromToday(-1); + } return boatInfosZone.getBody(); } @@ -784,7 +813,7 @@ } Block onSuccessFromBoatInfosForm() throws WaoException { - if (!boatInfosEditable) { + if (!boatInfosEditable && canEditBoatInfos()) { // Save data serviceBoat.createUpdateCompanyBoatInfos(companyBoatInfos); } @@ -807,13 +836,6 @@ sampleRow = getSampleRow(); // Get boat from list boat = getBoats().get(boatImmatriculation); - if (log.isDebugEnabled()) { - log.debug("Create contact from BOAT list"); - log.debug("Create contact :: boat imma : " + - boat.getImmatriculation()); - log.debug("Create contact :: sampleRow code : " + - sampleRow.getCode()); - } contacts.createNewContact(boat, sampleRow); return contacts; } @@ -822,13 +844,6 @@ // Get sampleRow from elligibleBoat list ElligibleBoat elligible = getCompanyBoatInfos().getElligibleBoat(sampleRowCode); sampleRow = elligible.getSampleRow(); - if (log.isDebugEnabled()) { - log.debug("Create contact from BOAT infos"); - log.debug("Create contact :: boat imma : " + - getBoatSelected()); - log.debug("Create contact :: sampleRow code : " + - sampleRow.getCode()); - } contacts.createNewContact(getBoatSelected(), sampleRow); return contacts; } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-03-31 10:10:28 UTC (rev 399) @@ -87,9 +87,14 @@ @IncludeStylesheet("context:css/contacts.css") public class Contacts extends AbstractFilteredPage implements WaoPage { + /** + * No restriction to display this page. + * + * @return true + */ @Override - public boolean isOnlyForAdmin() { - return false; + public boolean canDisplay() { + return true; } @Inject @@ -204,13 +209,15 @@ private UploadedFile contactsCsvFile; /** - * Only administrator and coordinator can import/export contacts. + * Only administrator and coordinator with no readOnly rights + * can import/export contacts. * * @return true if import/export of contacts can be done */ public boolean canImportExport() { - return user.isAdmin() || - user.getUserRole().equals(UserRole.COORDINATOR); + return (user.isAdmin() || + user.getUserRole().equals(UserRole.COORDINATOR)) && + !user.getReadOnly(); } @Log @@ -382,7 +389,8 @@ private String oldComment; public boolean hasActions() { - return !user.isAdmin() && contact.getValidationCompany() == null; + return !user.isAdmin() && contact.getValidationCompany() == null + && !user.getReadOnly(); } /** @@ -392,8 +400,9 @@ * @return true if the validation actions can be displayed */ public boolean hasValidationActions() { - return user.isAdmin() || - user.getUserRole().equals(UserRole.COORDINATOR); + return (user.isAdmin() || + user.getUserRole().equals(UserRole.COORDINATOR)) && + !user.getReadOnly(); } public boolean canValidate() { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ExceptionReport.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ExceptionReport.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ExceptionReport.java 2010-03-31 10:10:28 UTC (rev 399) @@ -42,6 +42,15 @@ * par : $Author$ */ public class ExceptionReport implements ExceptionReporter, WaoPage { +/** + * No restriction to display this page. + * + * @return true + */ + @Override + public boolean canDisplay() { + return true; + } @InjectComponent private Layout layout; @@ -75,10 +84,5 @@ } return getWaoException(eee.getCause()); } - - @Override - public boolean isOnlyForAdmin() { - return false; - } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-03-31 10:10:28 UTC (rev 399) @@ -55,10 +55,15 @@ */ @IncludeStylesheet("context:css/news.css") public class Index implements WaoPage { - + + /** + * No restriction to display this page. + * + * @return true + */ @Override - public boolean isOnlyForAdmin() { - return false; + public boolean canDisplay() { + return true; } @Inject @@ -116,6 +121,10 @@ return newsList; } + public boolean canEditNews() { + return user.isAdmin() && !user.getReadOnly(); + } + public boolean isEditionMode() { return isCreateMode() || news.getTopiaId().equals(editedId); } @@ -160,10 +169,12 @@ } void onSuccessFromNewsForm() throws WaoException { - serviceNews.saveNews(news, false); - //this.editedId = null; - if (log.isDebugEnabled()) { - log.debug(news.getContent()); + if (canEditNews()) { + serviceNews.saveNews(news, false); + //this.editedId = null; + if (log.isDebugEnabled()) { + log.debug(news.getContent()); + } } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-03-31 10:10:28 UTC (rev 399) @@ -32,7 +32,6 @@ import fr.ifremer.wao.entity.SampleMonth; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.SampleRowLog; -import fr.ifremer.wao.entity.SampleRowLogImpl; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.service.ServiceBoat; import fr.ifremer.wao.service.ServiceReferential; @@ -82,9 +81,14 @@ @IncludeStylesheet("context:css/sampling.css") public class SampleRowForm implements WaoPage { + /** + * Only admin with no readOnly rights can display SampleRowForm. + * + * @return true if the user can display the page + */ @Override - public boolean isOnlyForAdmin() { - return true; + public boolean canDisplay() { + return user.isAdmin() && !user.getReadOnly(); } @Inject Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-03-31 10:10:28 UTC (rev 399) @@ -57,9 +57,14 @@ @IncludeStylesheet("context:css/sampling.css") public class SampleRowHistoric implements WaoPage { + /** + * No restriction to display this page. + * + * @return true + */ @Override - public boolean isOnlyForAdmin() { - return false; + public boolean canDisplay() { + return true; } @Inject @@ -145,7 +150,8 @@ } public boolean canAddComment() { - return user.getUserRole().equals(UserRole.COORDINATOR); + return user.getUserRole().equals(UserRole.COORDINATOR) && + !user.getReadOnly(); } public void onSuccessFromAddComment() throws WaoException { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-03-31 10:10:28 UTC (rev 399) @@ -68,9 +68,14 @@ @IncludeStylesheet("context:css/sampling.css") public class SamplingPlan implements WaoPage { + /** + * No restriction to display this page. + * + * @return true + */ @Override - public boolean isOnlyForAdmin() { - return false; + public boolean canDisplay() { + return true; } @Inject @@ -110,17 +115,25 @@ @Property private UploadedFile samplingPlanCsvFile; + public boolean canImportSamplingPlan() { + return user.isAdmin() && !user.getReadOnly(); + } + @Log void onSuccessFromImportSamplingPlan() throws WaoException { - try { - ImportResults result = serviceSampling.importSamplingPlanCsv(samplingPlanCsvFile.getStream()); - layout.addInfo(result.getNbRowsImported() + " lignes du plan importés, " + - result.getNbRowsRefused() + " refusés."); - for (String error : result.getErrors()) { - layout.addInfo(error); + if (canImportSamplingPlan()) { + try { + ImportResults result = serviceSampling.importSamplingPlanCsv( + samplingPlanCsvFile.getStream()); + layout.addInfo(result.getNbRowsImported() + + " lignes du plan importés, " + + result.getNbRowsRefused() + " refusés."); + for (String error : result.getErrors()) { + layout.addInfo(error); + } + } catch (WaoBusinessException eee) { + layout.addError(eee.getMessage()); } - } catch (WaoBusinessException eee) { - layout.addError(eee.getMessage()); } } @@ -372,6 +385,15 @@ /** ------------------------- ACTIONS ----------------------------------- **/ /** + * Can edit the sampleRow. Only for admin with no readOnly rights. + * + * @return true if the sampleRow can be edited. + */ + public boolean canEditSampleRow() { + return user.isAdmin() && !user.getReadOnly(); + } + + /** * Used to filter period using dates from the program selected in table. * @param rowIndex index of the row in the table * @throws WaoException for a data problem Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-03-31 10:10:28 UTC (rev 399) @@ -76,9 +76,14 @@ @IncludeStylesheet("context:css/synthesis.css") public class Synthesis extends AbstractFilteredPage implements WaoPage { + /** + * No restriction to display this page. + * + * @return true + */ @Override - public boolean isOnlyForAdmin() { - return false; + public boolean canDisplay() { + return true; } @Inject Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java 2010-03-31 10:10:28 UTC (rev 399) @@ -50,9 +50,14 @@ @IncludeStylesheet("context:css/userProfile.css") public class UserProfile implements WaoPage { + /** + * No restriction to display this page. + * + * @return true + */ @Override - public boolean isOnlyForAdmin() { - return false; + public boolean canDisplay() { + return true; } @Inject Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-03-31 10:10:28 UTC (rev 399) @@ -33,6 +33,7 @@ </div> <div id="user-infos" class="fleft"> Vous êtes <strong>${currentUser.fullName}</strong> de la société <strong>${currentUser.company.name}</strong> + (${accessText}) </div> <div id="user-actions" class="fright"> <a t:type="pagelink" t:page="index" title="Page d'accueil"> Modified: trunk/wao-ui/src/main/webapp/Boats.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Boats.tml 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/webapp/Boats.tml 2010-03-31 10:10:28 UTC (rev 399) @@ -2,7 +2,7 @@ <t:layout t:pageTitle="Navires" t:contentId="so-boats" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> - <t:if t:test="user.admin"> + <t:if t:test="canImportReferentials()"> <div class="so-import"> <fieldset> <legend>Import des navires</legend> @@ -195,11 +195,13 @@ <h2>Informations sur ${boatInfos.boat.name}</h2> </div> <!-- ACTIONS --> - <div class="fright"> - <a t:type="actionlink" t:id="editBoatInfos" t:zone="so-boats-boat-infos"> - <img src="${asset:context:}/img/edit-32px.png" title="Editer les informations"/> - </a> - </div> + <t:if t:test="canEditBoatInfos()"> + <div class="fright"> + <a t:type="actionlink" t:id="editBoatInfos" t:zone="so-boats-boat-infos"> + <img src="${asset:context:}/img/edit-32px.png" title="Editer les informations"/> + </a> + </div> + </t:if> </div> </t:unless> @@ -299,13 +301,15 @@ <h2>Informations sur ${boatInfos.boat.name}</h2> </div> <!-- En-tête - actions --> - <div class="fright"> - <input t:type="submit" t:id="saveBoatInfos" class="ico save" value="Save" - title="Enregistrer les modifications" /> - <a t:type="actionlink" t:id="cancelEditBoatInfos" t:zone="so-boats-boat-infos"> - <img src="${asset:context:}/img/undo.png" title="Annuler les modifications"/> - </a> - </div> + <t:if t:test="canEditBoatInfos()"> + <div class="fright"> + <input t:type="submit" t:id="saveBoatInfos" class="ico save" value="Save" + title="Enregistrer les modifications" /> + <a t:type="actionlink" t:id="cancelEditBoatInfos" t:zone="so-boats-boat-infos"> + <img src="${asset:context:}/img/undo.png" title="Annuler les modifications"/> + </a> + </div> + </t:if> </div> <!-- Corps - contact --> Modified: trunk/wao-ui/src/main/webapp/Index.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Index.tml 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/webapp/Index.tml 2010-03-31 10:10:28 UTC (rev 399) @@ -2,7 +2,7 @@ <t:layout t:pageTitle="News" t:contentId="so-news" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> <form t:type="form" t:id="newsForm"> - <t:if t:test="user.admin"> + <t:if t:test="canEditNews()"> <p class="aright"> <a t:type="actionlink" t:id="addNews"> <img src="${asset:context:}/img/add-32px.png" alt="Ajouter" title="Ajouter un nouvel article"/> @@ -27,7 +27,7 @@ </p:else> </t:if> </h2> - <t:if t:test="user.admin"> + <t:if t:test="canEditNews()"> <p class="aright"> <t:if t:test="editionMode"> <input t:type="submitContext" t:context="rowIndex" t:id="saveNews" class="ico22px save22px" value="Save" Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-03-30 08:24:27 UTC (rev 398) +++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-03-31 10:10:28 UTC (rev 399) @@ -2,17 +2,17 @@ <t:layout t:pageTitle="Plan d'Echantillonnage" t:contentId="so-sampling" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> <div class="${mainClass}"> - <t:if t:test="user.admin"> + <t:if t:test="canImportSamplingPlan()"> <div class="so-import"> - <fieldset> - <legend>Import d'un nouveau plan d'échantillonnage</legend> - <form t:type="form" t:id="importSamplingPlan"> + <form t:type="form" t:id="importSamplingPlan" action="post"> + <fieldset> + <legend>Import d'un nouveau plan d'échantillonnage</legend> <t:errors /> <t:label for="samplingPlanCsvFile" /> : <input t:type="upload" t:id="samplingPlanCsvFile" t:validate="required" /> <input t:type="submit" class="ico import" value="OK" title="Importer un plan d'échantillonnage (format CSV avec encodage UTF-8)" /> - </form> - </fieldset> + </fieldset> + </form> </div> </t:if> <div class="clearfix mbottom10"> @@ -24,20 +24,14 @@ title="Exporter le plan d'échantillonnage du ${dateFormat.format(period.fromDate)} au ${dateFormat.format(period.thruDate)}" /> </a> </h1> - <form t:type="form" t:id="periodForm"> + <form t:type="form" t:id="periodForm" action="post"> <t:label t:for="periodBegin" /> : <input t:type="datefield" class="width70" t:id="periodBegin" t:format="MM/yyyy" /> <t:label t:for="periodEnd" /> : <input t:type="datefield" class="width70" t:id="periodEnd" t:format="MM/yyyy" /> <input t:type="submit" class="ico search" value="Search" t:title="Affichage des lignes du plan couvertes par la période sélectionnée" /> </form> </div> - <t:if t:test="user.admin"> + <t:if t:test="canEditSampleRow()"> <div class="actions fright"> -<!-- <span> - <a t:type="pagelink" t:page="samplingHistoric"> - <img src="${asset:context:}/img/clock.png" alt="Historique" - title="Voir l'historique des plans d'échantillonnage"/> - </a> - </span>--> <span> <a t:type="pagelink" t:page="sampleRowForm"> <img src="${asset:context:}/img/add-32px.png" alt="Ajouter" title="Ajouter une nouvelle ligne"/> @@ -173,7 +167,7 @@ <a t:type="pagelink" t:page="sampleRowHistoric" t:context="row.code"> <img src="${asset:context:}/img/clock-22px.png" alt="Historique" title="Voir historique de la ligne"/> </a> - <t:if t:test="user.admin"> + <t:if t:test="canEditSampleRow()"> <a t:type="pagelink" t:page="sampleRowForm" t:context="row.topiaId"> <img src="${asset:context:}/img/edit.png" alt="Modifier" title="Modifier la ligne"/> </a>