grails.serverURL = "http://www.changeme.com"
}
development {
- grails.serverURL = "http://localhost:8080/eliot-textes"
+ grails.serverURL = "http://localhost:8081/eliot-textes"
}
test {
grails.serverURL = "http://localhost:8080/${appName}"
eliot.textes.impression.docbook.log = false
}
development {
- eliot.url.webservices = "http://127.0.0.1:8080"
+ eliot.url.webservices="http://localhost:8080/eliot-webservices"
eliot.webservices.urlServeur = 'http://127.0.0.1:8080'
eliot.webservices.nomApplication = 'eliot-webservices'
eliot.webservices.actif = true
class ImpressionController extends AbstractTextesController {
TextesImpressionDiffereeService textesImpressionDiffereeService
+ def index = {
+ println 'tetetet'
+ }
def imprimer = {
render enregistreDemande(params, false) as JSON
render(
[
success: true,
- statut: demande.statut.toString()
+ statut: demande.statut.toString(),
+ message: demande.traitementRapport
] as JSON
)
} catch (Exception e) {
}
+ def directeErreur = {
+
+ render(view: '/impression/directeerreur', model: [message: params.message])
+ }
}
eliot.textes.impression.ajout.erreur=Une erreur s'est produite lors de l'enregistrement de la demande d'impression.
eliot.textes.impression.serviceNonDisponible=Le service d'impression est indisponible. Contactez l'administrateur de votre établissement
eliot.textes.impression.attente=Création en cours...
+eliot.textes.impression.erreur=Une erreur s'est produite lors de l'impression !
eliot.textes.modififcationActivite.documents.enregistrementEchoue=Un ou plusieurs document(s) n'ont pas pu être joint(s) à l'activité.
* Permet de créer un document docbook composé d'un cahier de textes
* à partir d'un template et d'un modele
*/
- public String renderDocbook(Map model) {
+ public String renderDocbook(Map model) throws Exception{
return docbookTemplateService.render(MODELE_UN_CDT, model)
}
demande.notifieDebutTraitement()
Boolean succes = true
+ String message = ''
try {
TextesImpressionParam param =
} catch (Exception ex) {
log.error("Error lors du traitement de la demande ${demande.id}", ex)
+ message = ex.getMessage()
succes = false
}
- demande.notifieFinTraitement(succes)
+ demande.notifieFinTraitement(succes, message)
return demande
}
}
public DemandeTraitement enregistreDemande(SecuriteSession securiteSession,
- TextesImpressionParam param) {
+ TextesImpressionParam param) {
param.validate()
import org.xml.sax.SAXParseException
import org.lilie.services.eliot.textes.impression.template.htmldocbook.FeuillesDeStyle
+import javax.xml.parsers.DocumentBuilderFactory
+import javax.xml.parsers.DocumentBuilder
+import org.xml.sax.InputSource
+import org.w3c.dom.Document
+import java.util.regex.Pattern
+import java.util.regex.Matcher
+
/**
* Gestion des template permetant de générer du docbook.
* @author othe
* doit correspondre à ce qu'attend le modele
* @return un string contenant un fichier docbook
*/
- public String render(String template, Map model) {
+ public String render(String template, Map model) throws Exception{
ajouteTransformationHtml(model)
} catch (TemplateException e) {
throw new IllegalStateException(
"Erreur au traitement du template freemarker", e)
+ } catch (Throwable e){
+ Pattern TAG_REGEX = Pattern.compile("<title role=\"activite\">(.+?)</title>");
+ final List<String> tagValues = new ArrayList<String>();
+ final Matcher matcher = TAG_REGEX.matcher(out.toString());
+ while (matcher.find()) {
+ tagValues.add(matcher.group(1));
+ }
+ if (tagValues.size() > 0){
+ throw new IllegalStateException(
+ """L'impression n'a pas pu aboutir. Cela peut être dû au contenu du champ 'Description' de l'activité """ + tagValues.get(tagValues.size() - 1), e)
+ } else {
+ throw new IllegalStateException(
+ """L'impression n'a pas pu aboutir""", e)
+ }
+
}
String resultat = corrigeDocbook(out.toString())
'${createLink(action: 'getStatus', controller: 'suiviImpression')}';
eliot.textes.impression.Constantes.urlPdf=
'${createLink(action: 'showFichier', controller: 'suiviImpression')}';
+ eliot.textes.impression.Constantes.urlDirecteErreur =
+ '${createLink(action: 'directeErreur', controller: 'suiviImpression')}';
</script>
<g:javascript library="src/views/impression/directe/Application"/>
eliot.textes.impression.Application = function () {
- var Clazz = Ext.extend(Ext.util.Observable, {
+ var Clazz = Ext.extend(Ext.util.Observable, {
- constructor:function () {
+ constructor:function () {
- this.attente();
- },
+ this.attente();
+ },
+
+ attente:function () {
+ var task = {
+ scope:this,
+ run:function () {
+
+ Ext.Ajax.request({
+ url:eliot.textes.impression.Constantes.urlGetStatus,
+ params:{demandeId:eliot.textes.impression.Modele.demandeId},
+ success:function (response, request) {
+
+ var reponse = Ext.decode(response.responseText);
+
+
+ if (reponse.statut == eliot.textes.impression.Constantes.TERMINEE) {
+
+ this.finPreparationPdf();
+ }
+
+ if (reponse.statut == 'ERREUR') {
+
+ this.erreurImpression(reponse.message);
+ }
+ },
+ scope:this,
+ failure:function () {
+ eliot.textes.Messages.showErreur(
+ eliot.textes.Modele.message.ajoutDemandeImpressionErreur
+ );
+ }
+ });
- attente:function () {
- var task = {
- scope:this,
- run:function () {
-
- Ext.Ajax.request({
- url:eliot.textes.impression.Constantes.urlGetStatus,
- params:{demandeId:eliot.textes.impression.Modele.demandeId},
- success:function (response, request) {
-
- var reponse = Ext.decode(response.responseText);
-
- if (reponse.statut == eliot.textes.impression.Constantes.TERMINEE) {
-
- this.finPreparationPdf();
- }
- },
- scope:this,
- failure:function () {
- eliot.textes.Messages.showErreur(
- eliot.textes.Modele.message.ajoutDemandeImpressionErreur
- );
- }
- });
-
- },
- interval:2000
- };
-
- this.runner = new Ext.util.TaskRunner();
- this.tache = this.runner.start(task);
},
+ interval:2000
+ };
+
+ this.runner = new Ext.util.TaskRunner();
+ this.tache = this.runner.start(task);
+ },
+
+ finPreparationPdf:function () {
+ this.runner.stop(this.tache);
+
+ var url = eliot.textes.impression.Constantes.urlPdf +
+ "?id=" +
+ eliot.textes.impression.Modele.demandeId;
+
+ document.location.href = url;
+ },
+
- finPreparationPdf:function () {
- this.runner.stop(this.tache);
+ erreurImpression:function (message) {
+ this.runner.stop(this.tache);
- var url = eliot.textes.impression.Constantes.urlPdf +
- "?id=" +
- eliot.textes.impression.Modele.demandeId;
+ var url = eliot.textes.impression.Constantes.urlDirecteErreur +
+ '?message=' + message;
- document.location.href = url;
- }
+ document.location.href = url;
+ }
- });
+ });
- return new Clazz();
+ return new Clazz();
}();
\ No newline at end of file
eliot.textes.impression.Constantes = {
- urlGetStatus:undefined,
- urlPdf:undefined,
- TERMINEE:"TERMINEE"
+ urlGetStatus:undefined,
+ urlPdf:undefined,
+ urlDirecteErreur:undefined,
+ TERMINEE:"TERMINEE"
};