001/* 002 * Copyright 2022 Anyware Services 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.ametys.plugins.forms.generators; 017 018import java.util.ArrayList; 019import java.util.List; 020 021import org.apache.avalon.framework.service.ServiceException; 022import org.apache.avalon.framework.service.ServiceManager; 023import org.apache.cocoon.environment.ObjectModelHelper; 024import org.apache.cocoon.environment.Request; 025import org.apache.cocoon.xml.XMLUtils; 026import org.xml.sax.SAXException; 027 028import org.ametys.core.right.RightManager; 029import org.ametys.plugins.forms.dao.FormDAO; 030import org.ametys.plugins.forms.helper.FormAdminDashboardHelper; 031import org.ametys.plugins.forms.repository.Form; 032import org.ametys.plugins.linkdirectory.dynamic.AbstractInternalDynamicInformationGenerator; 033import org.ametys.runtime.i18n.I18nizableText; 034import org.ametys.web.WebHelper; 035 036/** 037 * Fenerator for saxing dynamic information for admin dashboard service 038 */ 039public class FormAdminDashboardDynamicInformationGenerator extends AbstractInternalDynamicInformationGenerator 040{ 041 /** The form DAO */ 042 protected FormDAO _formDAO; 043 044 /** The right manager */ 045 protected RightManager _rightManager; 046 047 /** The form admin dashboard helper */ 048 protected FormAdminDashboardHelper _formAdminDashboardHelper; 049 050 @Override 051 public void service(ServiceManager serviceManager) throws ServiceException 052 { 053 super.service(serviceManager); 054 _formDAO = (FormDAO) serviceManager.lookup(FormDAO.ROLE); 055 _rightManager = (RightManager) serviceManager.lookup(RightManager.ROLE); 056 _formAdminDashboardHelper = (FormAdminDashboardHelper) serviceManager.lookup(FormAdminDashboardHelper.ROLE); 057 } 058 059 @Override 060 protected void saxShortValue() throws SAXException 061 { 062 Request request = ObjectModelHelper.getRequest(objectModel); 063 String siteName = WebHelper.getSiteName(request); 064 065 List<Form> formToAdmin = _formAdminDashboardHelper.getFormToAdmin(siteName, getCurrentUser()); 066 XMLUtils.createElement(contentHandler, SHORT_VALUE, String.valueOf(formToAdmin.size())); 067 } 068 069 @Override 070 protected void saxLongValue() throws SAXException 071 { 072 Request request = ObjectModelHelper.getRequest(objectModel); 073 String siteName = WebHelper.getSiteName(request); 074 075 List<Form> formToAdmin = _formAdminDashboardHelper.getFormToAdmin(siteName, getCurrentUser()); 076 int nb = formToAdmin.size(); 077 if (nb != 0) 078 { 079 List<String> params = new ArrayList<>(); 080 params.add(String.valueOf(nb)); 081 I18nizableText longValue = new I18nizableText("plugin.forms", nb > 1 ? "PLUGINS_FORMS_LINK_DIRECTORY_ADMIN_DASHBOARD_LONG_VALUE_MULTIPLE" : "PLUGINS_FORMS_LINK_DIRECTORY_ADMIN_DASHBOARD_LONG_VALUE", params); 082 083 XMLUtils.startElement(contentHandler, LONG_VALUE); 084 longValue.toSAX(contentHandler); 085 XMLUtils.endElement(contentHandler, LONG_VALUE); 086 } 087 else 088 { 089 I18nizableText longValue = new I18nizableText("plugin.forms", "PLUGINS_FORMS_LINK_DIRECTORY_ADMIN_DASHBOARD_LONG_VALUE_NO_FORMS"); 090 XMLUtils.startElement(contentHandler, LONG_VALUE); 091 longValue.toSAX(contentHandler); 092 XMLUtils.endElement(contentHandler, LONG_VALUE); 093 } 094 } 095 096 @Override 097 protected void saxTooltips() throws SAXException 098 { 099 Request request = ObjectModelHelper.getRequest(objectModel); 100 String siteName = WebHelper.getSiteName(request); 101 102 List<Form> formToAdmin = _formAdminDashboardHelper.getFormToAdmin(siteName, getCurrentUser()); 103 104 for (Form form : formToAdmin) 105 { 106 saxItem(form.getTitle(), form.getDescription(), null); 107 } 108 } 109}