You are not logged in.
Bonjour,
au sein de l'université nous avons une Synchronisation de contenu de type "Annuaire des utilisateurs : utilisateurs depuis une population Ametys" qui se sert lui même sur notre LDAP au niveau population.
Nous souhaitons créer la même chose pour les entités via un synchronisation de type : "Annuaire des utilisateurs : entités depuis une source de données SQL".
Est-ce possible s'il vous plaît ?
Je pose la question car lorsque je configure la source, il me demande la "Table des utilisateurs" et la "colonne identifiant des utilisateurs".
Hors, comme je vous le disait au début, j'utilise les "utilisateurs depuis une population Ametys" donc nous n'avons pas les utilisateurs et les entités sur la même base SQL mais bien "entités" dans une base et "utilisateurs" dans Ametys.
Bien cordialement
AxelP, Le Mans Université
Bonjour,
après je dois relativiser ma propre réponse car je ne suis pas sur que cela soit dans les critères du W3C avec des dates en français notamment les mois...
Désolé
Bonjour,
lorsque je valide les flux RSS via
J'obtiens le message suivant :
line 1, column 414: Self reference doesn't match document location [help]
... a-431a-4e48-93b9-c5861a944aa8/rss.xml"/><item><title>Le Startup Weekend< ...
En regardant de près je me rends compte qu'il y a une erreur de génération du lien généré dans la balise :
<atom:link type="application/rss+xml" rel="self" href="http://mon-ent-etudiant.univ-lemans.fr/_plugins/web/zoneItembb77af2a-431a-4e48-93b9-c5861a944aa8/rss.xml"/>
au lieu de
<atom:link type="application/rss+xml" rel="self" href="http://mon-ent-etudiant.univ-lemans.fr/_plugins/web/zoneItem/bb77af2a-431a-4e48-93b9-c5861a944aa8/rss.xml"/>
En effet il manque le / entre zoneItem et "bb77af2a..."
Je ne pense pas que cela vienne des fichiers locaux de la charte car je ne surcharge pas le fichier Web/main/plugin-web/pages/rss/rss.xsl sur la ligne 29 :
<atom:link href="{$siteURL}/{$rssPath}" rel="self" type="application/rss+xml" />
Auriez-vous une solution de contournement ou un correctif à m'apporter s'il vous plaît ?
Bonsoir,
je viens de trouver en fait sur vos sources le patch suivant n'est pas appliqué :
ligne 33 de :
<i18n:date pattern="EEE, d MMM yyyy HH:mm:ss Z" src-pattern="yyyy-MM-dd'T'HH:mm:ss" locale="en_EN">
en
<i18n:date pattern="EEE, d MMM yyyy HH:mm:ss Z" src-pattern="yyyy-MM-dd'T'HH:mm:ss.SSSXXX" locale="fr_FR">
Pour la variable locale je ne suis pas sur de moi mais de mon côté je vais la laisser en fr_FR.
Bonne soirée
Bonjour,
je suis en train de surcharger le fichier default-content2rss.xsl sans soucis.
Mon objectif est de sortir la date de début d'une actualité à la place de la dernière validation.
Par contre je rencontre un problème => ce n'est pas le bon fuseau horaire qui est indiqué.
Un évènement commençant le 16/12/2020 va être indiqué le mar., 15 déc. 2020 23:00:00 +0100 sur la date-pattern j'ai placé locale="fr_FR" au lieu de locale="en_EN" sans grand succès.
Sauriez-vous ce que je dois indiquer pour obtenir la bonne date s'il vous plaît ?
Voici mon code pour org.ametys.plugins.news.Content.news2rss-abstract.xsl :
<xsl:template match="content">
<item>
<title>
<xsl:value-of select="metadata/title"/>
</title>
<xsl:if test="//pages/page">
<link>
<xsl:value-of select="resolver:resolve('page', //pages/page/@id, false(), true())"/>
</link>
</xsl:if>
<language>
<xsl:value-of select="@language"/>
</language>
<guid isPermaLink="false">
<xsl:value-of select="$contextPath"/>/_wrapped-content/<xsl:value-of select="@name"/>.html</guid>
<pubDate>
<i18n:date pattern="EEE, d MMM yyyy HH:mm:ss Z" src-pattern="yyyy-MM-dd'T'HH:mm:ss" locale="fr_FR">
<xsl:choose>
<xsl:when test="metadata/start-date">
<xsl:value-of select="metadata/start-date"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@lastValidatedAt"/>
</xsl:otherwise>
</xsl:choose>
</i18n:date>
</pubDate>
<rawDate>
<xsl:choose>
<xsl:when test="metadata/start-date">
<xsl:value-of select="metadata/start-date"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@lastValidatedAt"/>
</xsl:otherwise>
</xsl:choose>
</rawDate>
<description>
<xsl:if test="metadata/illustration/image">
<img src="<xsl:value-of select="resolver:resolveBoundedImage(metadata/illustration/image/@type, metadata/illustration/image/@path, 0, 0, false(), true())"/>" alt="<xsl:value-of select="metadata/illustration/alt-text"/>" />
</xsl:if>
<xsl:apply-templates select="metadata/abstract/node()" mode="escape"/>
</description>
</item>
</xsl:template>
Merci beaucoup pour votre réponse, elle me convient parfaitement.
En effet, il s'agit de mettre à jour une couleur sur une charte "générique" et je ne voulais pas charger les futures maitenances avec de multiples chartes.
Bonne journée
Bonjour, lorsque l'on va dans la configuration d'un site, il y a un onglet "Couleur".
De là j'ai 2 questions :
Comment mettre à jour les couleurs ? j'ai bien trouvé le fichier site-colors.xml mais je ne vois pas comment le surcharger
Peut-on utiliser cette valeur dans une charte directement ?
Bonne journée
Merci beaucoup pour votre réponse.
Bonne journée.
Bonjour,
dans les régimes d'études, je souhaiterais ajouter "Formation en apprentissage".
Que dois-je faire ?
Dans la V3, il était possible de le piloter avec des fichiers du type formofteaching_org.xml
<items i18n-catalog="application">
<item code="1" i18n-key="APPLICATION_ODF_FORMOFTEACHING_ORG_1" cdmValue="formInit"/>
<item code="2" i18n-key="APPLICATION_ODF_FORMOFTEACHING_ORG_2" cdmValue="formCont"/>
<item code="3" i18n-key="APPLICATION_ODF_FORMOFTEACHING_ORG_3" cdmValue="formContNonDip"/>
<item code="4" i18n-key="APPLICATION_ODF_FORMOFTEACHING_ORG_4" cdmValue="formAppr"/>
<!--<item code="5" i18n-key="APPLICATION_ODF_FORMOFTEACHING_ORG_5" cdmValue="formPro"/>-->
<item code="6" i18n-key="APPLICATION_ODF_FORMOFTEACHING_ORG_6" cdmValue="ContratDeProfessionalisation" />
<item code="7" i18n-key="APPLICATION_ODF_FORMOFTEACHING_ORG_7" cmdValue="ead" />
</items>
Mais dans la version 4, je suis à la recherche de la méthodologie, pourriez-vous m'aider s'il vous plaît ?
Cordialement
Bonjour,
j'étudie la faisabilité pour intégrer des informations issus d'un objet JSON. Ici il est fournit par une API sur le portail HAL () qui permet d'importer des publications scientifiques.
J'aimerais savoir si vous aviez eut connaissance de ce genre de projet sous Ametys s'il vous plaît ?
Bonne journée
Bonjour,
je viens de mettre le problème sur le JIRA :
Bonne journée
Axel
Bonjour,
pour le plugin user-directory : ametys-plugin-user-directory-2.2.3.jar
et pour la version du cms : 4.2.9
Bonne journée
Axel
Bonjour,
Donc dans org.ametys.plugin.agents.Content.uduser.xml, j'ai donc :
<cms:metadata name="phone" type="string" multiple="true">
<label i18n="true">CONTENT_TYPES_UD_USER_PHONE</label>
<description i18n="true">CONTENT_TYPES_UD_USER_PHONE_DESC</description>
</cms:metadata>
Lorsque j'édite le contenu "personne", le champ téléphone m'indique bien "Téléphone (séparés par des virgules)", donc il a prit en compte le champ multiple.
Malheureusement il ne l'a pas peuplé avec les 2 numéros, il ne prend en compte que le premier rencontré.
Auriez-vous une autre piste s'il vous plaît ?
Axel
Bonjour, voici le contenu de synchronizable-collections.xml sur la partie utilisateurs de l'annuaire :
<collection id="utilisateurs-annuaire">
<label>Utilisateurs annuaire</label>
<contentType>org.ametys.plugin.agents.Content.uduser</contentType>
<contentPrefix>annuaire</contentPrefix>
<synchronizeExistingContentsOnly>false</synchronizeExistingContentsOnly>
<removalSync>true</removalSync>
<workflowName>user</workflowName>
<initialActionId>11</initialActionId>
<synchronizeActionId>800</synchronizeActionId>
<validateActionId>41</validateActionId>
<validateAfterImport>true</validateAfterImport>
<reportMails>xxxx@univ-lemans.fr</reportMails>
<contentOperator>org.ametys.plugins.userdirectory.synchronize.UDOrgUnitTypeOperator</contentOperator>
<languages>
<value>fr</value>
<value>en</value>
</languages>
<model id="org.ametys.plugins.userdirectory.synchronize.users.ldap">
<param name="datasourceId">LDAP-default-datasource</param>
<param name="peopleDN">ou=people</param>
<param name="baseFilter">(webAffiliation=PERS)</param>
<param name="scope">one</param>
<param name="populationId">utilisateurs</param>
<param name="login">uid</param>
<param name="mapping">[{"metadata-ref":"title","attribute":"cn","synchro":false},{"metadata-ref":"firstname","attribute":"givenName","synchro":false},{"metadata-ref":"lastname","attribute":"sn","synchro":false},{"metadata-ref":"service","attribute":"webAffectation","synchro":false},{"metadata-ref":"role","attribute":"umSpecialite","synchro":false},{"metadata-ref":"phone","attribute":"telephoneNumber","synchro":false},{"metadata-ref":"mail","attribute":"mail","synchro":false}]</param>
</model>
</collection>
Que faut il ajouter s'il vous plaît ? "multiple":"true" ? {"metadata-ref":"phone","attribute":"telephoneNumber","synchro":false,"multiple":"true"} ?
Bonjour,
nous sommes en pleine migration V3 vers V4 à l'Université du Mans.
Au niveau de notre annuaire LDAP, nous utilisons des attributs multi-évalué comme telephoneNumber : lorsque les personnes ont 2 bureaux (donc 2 lignes fixes).
De même pour les affectations, par exemple pour un enseignant-chercheur : il est affecté à la composante où il enseigne et au laboratoire où il effectue ses recherches.
Dans la V3, via le service "Recherche dans l'annuaire", avec un override de /mypage/services/search/search_1.3.xsl nous arrivions à gérer les attributs multi-évalués.
Aujourd'hui le système de synchronisation des populations fonctionne très bien et le fait de ne pas sollicité LDAP tout le temps est vraiment le bienvenu, malheureusement je ne peux plus afficher les attributs multiples.
Il ne prend en compte que la première correspondance qu'il rencontre.
Pourriez-vous nous aider s'il vous plaît ?
En creusant, j'ai appris plusieurs chose. Lors de l'utilisation d'un reverse proxy sous apache, jquery.ajax ne peut pas passer par la fonction "success" car détectant une redirection, il renvoit un code 302 et passera automatiquement par "error".
De là il faut passer obligatoirement par complete et filtrer le xhr.status 200 et le reste...
complete : function(xhr) {
switch(xhr.status){
case 200 :
$j(".interieur-gauche").css("background-image","url('<xsl:value-of select="$absolute-site-uri-prefix" />/<xsl:value-of select="$lang" />/<xsl:value-of select="ametys:pagePath()" />/_attachments/visuel-gauche.png')");
break;
default :
$j(".interieur-gauche").css("background-image","url('<xsl:value-of select="ametys:skinURL('um_img/page_interieure/blason-interieur.png')" />')");
}
}
});
Mais attention si vous avez une redirection customiser (erreur-404.html par exemple) sur vos différents code d'erreur (404, etc...), il renverra un code 200 car il trouve bien une page même si il ne s'agit pas de celle souhaitée.
De là j'ai fait une exception dans apache pour les contenus de type image.
<LocationMatch "\.(png|jpeg|jpg|gif)$">
ErrorDocument 404 default
</LocationMatch>
Voici la solution complète , tout d'abord la partie en js :
<script type="text/javascript" >
$j(window).load(function()
{
$j.ajax({
type:'GET',
dataType:'image/png',
url:'<xsl:value-of select="$absolute-site-uri-prefix" />/<xsl:value-of select="$lang" />/<xsl:value-of select="ametys:pagePath()" />/_attachments/visuel-gauche.png',
xhrFields: {withCredentials: true},
complete : function(xhr) {
switch(xhr.status){
case 200 :
$j(".interieur-gauche").css("background-image","url('<xsl:value-of select="$absolute-site-uri-prefix" />/<xsl:value-of select="$lang" />/<xsl:value-of select="ametys:pagePath()" />/_attachments/visuel-gauche.png')");
break;
default :
$j(".interieur-gauche").css("background-image","url('<xsl:value-of select="ametys:skinURL('um_img/page_interieure/blason-interieur.png')" />')");
}
}
});
});
</script>
et après dans apache :
ProxyErrorOverride On
ErrorDocument 400 http://www.univ-lemans.fr/fr/erreurs/erreur-400.html
ErrorDocument 401 http://www.univ-lemans.fr/fr/erreurs/erreur-401.html
ErrorDocument 403 http://www.univ-lemans.fr/fr/erreurs/erreur-403.html
ErrorDocument 404 http://www.univ-lemans.fr/fr/erreurs/erreur-404.html
<LocationMatch "\.(png|jpeg|jpg|gif)$">
ErrorDocument 404 default
</LocationMatch>
Je passe le post en résolu.
Donc une petite information supplémentaire, ajax relance un 302 found.
Je vais essayer de faire un test sur un complete avec le code pour créer une conditionnelle.
Un article qui résume le problème :
Merci de votre réponse :
Voici le type de page impacté :
Dans la partie bleu à gauche il y a le picto de l'université par défaut et je veux faire apparaitre le picto de la section (celui du menu gauche). Mais je veux m'éviter de créer un gabarit par section de page intérieure.
Si j'impose la pièce jointe, en cas d'oubli le visuel gauche n'apparait pas.
Je voulais effectuer un test pour être sur et avoir un comportement par défaut.
Selon vous, je devrais donc placer une zone gauche et placer sur chaque page l'image, pourquoi pas.
Après avec mon architecture, je ne bénéficierai pas de l'héritage car le premier niveau est souvent une page vierge et les second niveau sont des pages "hub" avec un autre gabarit.
Bonjour,
je souhaite tester la présence d'un fichier joint d'une page dans un template.
Je me suis résolu à passer par du jquery car il n'y a pas possibilité à ma connaissance de tester si une pièce jointe est présente sur une page dans le xsl d'un te mplate.
Voici mon code :
$j.ajax({
url:'<xsl:value-of select="$absolute-site-uri-prefix" />/<xsl:value-of select="$lang" />/<xsl:value-of select="ametys:pagePath()" />/_attachments/visuel-gauche.png',
type:'HEAD',
error: function()
{
$j(".interieur-gauche").css("background-image","url('<xsl:value-of select="ametys:skinURL('um_img/page_interieure/blason-interieur.png')" />')");
},
success: function()
{
$j(".interieur-gauche").css("background-image","url('<xsl:value-of select="$absolute-site-uri-prefix" />/<xsl:value-of select="$lang" />/<xsl:value-of select="ametys:pagePath()" />/_attachments/visuel-gauche.png')");
}
});
Cela fonctionne sur mon bo en preview et en live, mais pas sur le front : il passe toujours par error.
Je précise que j'ai un serveur en back et un serveur en front dissocié.
J'ai fouillé et je ne trouve pas, j'ai creusé la piste du reverse proxy sous apache mais je ne trouve rien de tangible.
Auriez-vous des éléments susceptible de m'aider s'il vous plaît ?
Bonne journée
AxelP
Merci beaucoup ! En effet il s'agit de la majuscule :
<xsl:value-of select="content/orgUnit"/>
et pour formofteachingOrg :
<xsl:value-of select="content/formofteachingOrg[position()=1]"/> (par exemple)
Il vaut mieux faire un clic droit et "afficher la source" pour vérifier les majuscules.
Bonne journée, et encore merci !
Bonjour,
je travaille actuellement sur le service "Recherche de formation" et la surcharge du fichier :
ODF Web/main/plugin-odf-web/pages/services/search/search_1.2.xsl
Plus précisément dans le template "hits" pour les résultats.
<xsl:template name="hits">
<div class="results">
<ul>
<xsl:for-each select="/search/hits/hit">
<test><xsl:copy-of select="." /></test>
<li>
<xsl:attribute name="class">hit page<xsl:text> </xsl:text>
<xsl:call-template name="common-utils-class"/>
</xsl:attribute>
<a title="{title}">
<xsl:attribute name="href"><xsl:call-template name="hit-href"/></xsl:attribute>
<xsl:value-of select="title"/>
</a>
<span><xsl:value-of select="content/mention"/></span>
<span><xsl:value-of select="content/orgunit"/></span>
<xsl:call-template name="hit-scoring"/>
<xsl:call-template name="excerpt"/>
<xsl:call-template name="hit-lastvalidation"/>
<xsl:call-template name="hit-subprograms"/>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:template>
Malheureusement je n'arrive pas à afficher <xsl:value-of select="content/orgunit"/>
Voici ce que donne la balise <test><xsl:copy-of select="." /></test> :
<hit>
<score>0.0</score>
<percent>0</percent>
<title>DUT GEA opt. GESTION DES RESSOURCES HUMAINES</title>
<content>
<title>DUT GEA opt. GESTION DES RESSOURCES HUMAINES</title>
<catalog value="2017-2021">Catalogue 2017-2021</catalog>
<keywords>DUT</keywords>
<keywords>GEA</keywords>
<keywords>gestion</keywords>
<keywords>entreprise</keywords>
<keywords>administration</keywords>
<keywords>iut</keywords>
<keywords>Le Mans</keywords>
<keywords>ressources</keywords>
<keywords>humaines</keywords>
<keywords>rh</keywords>
<keywords>humaine</keywords>
<keywords>ressource</keywords>
<mention>GESTION DES ENTREPRISES ET DES ADMINISTRATIONS</mention>
<domain value="0002">Droit, économie, gestion</domain>
<educationkind value="M">M</educationkind>
<degree value="DUT">Diplôme universitaire de technologie (DUT)</degree>
<sector-activity></sector-activity>
<jointorgunit></jointorgunit>
<cite97code></cite97code>
<sisecode value="0002.4">Sciences de gestion</sisecode>
<erasmuscode></erasmuscode><romecode></romecode>
<orgunit value="orgunitContent://4a2aeb2a-03c0-43aa-aca0-f74d1d92834c">Institut Universitaire de Technologie du Mans </orgunit>
<place value="72000">Le Mans</place>
<educationlevel value="2">2</educationlevel>
<distancelearning></distancelearning>
<formofteachingorg value="1">Formation initiale</formofteachingorg>
<formofteachingorg value="2">Formation continue</formofteachingorg>
</content>
<content-name>program-mdtgear-202</content-name>
<excerpt>Cette formation est dispensée par les établissements : Université du Maine - IUT du Mans Le Diplôme Universitaire de Technologie (DUT) traduit la maîtrise des compétences considérées comme...</excerpt><type>page</type>
<uri>fr/formation/catalogue-des-formations/diplome-universitaire-de-technologie-dut-DUT/droit-economie-gestion-0002/dut-gea-opt-gestion-des-ressources-humaines-program-mdtgear-202</uri><lastmodified>2014-01-24T10:24:28.000+01:00</lastmodified><lastvalidation>2016-11-07T09:30:40.000+01:00</lastvalidation>
<sitename>xxx</sitename>
<sitetitle>xxx</sitetitle>
<siteurl>xxx</siteurl>
</hit>
Le value-of dans <orgunit value="orgunitContent://4a2aeb2a-03c0-43aa-aca0-f74d1d92834c">Institut Universitaire de Technologie du Mans </orgunit> me pose problème pour récupérer le contenu texte de la balise.
J'avoue avoir essayer de nombreuses orthographes pour obtenir le contenu de ce champ mais sans succès.
Pouvez-vous m'aider s'il vous plait ?
Bonjour,
en effet j'avais un type employee dans WEB-INF/content-types/web avec les fichiers du plugins.
Et cela était la source de l'erreur.
Merci beaucoup de votre aide
Bonne journée
Axel
Bonjour,Je reviens vers vous car je n'ai pas trouvé de solution à ma problématique.Lorsque je vais voir dans le plugin.xml, il y a bien org.ametys.plugins.userdirectory.Content.employee et le content type est bien à private= "true" et les icones sont bien définis :
<cms:small>img/content/employee_16.png</cms:small>
<cms:medium>img/content/employee_32.png</cms:medium>
<cms:large>img/content/employee_48.png</cms:large>
Dans tous les cas, merci de votre aide.
Je vais continuer à chercher une piste.
Bonne journée
Bonjour,
j'ai arrêté le serveur, placé les fichiers dans Ametys_CMS/application/cms/plugins ainsi que le chown.
Fait les paramétrages indiqué sur le manuel d'intégration du plugin annuaire.
Restart du serveur.
Dans le repository JCR, je peux voir dans la partie "Plugins par fichiers" :
employee
-- content-types
---- org.ametys.cms.contenttype.ContentTypeExtensionPoint
-- ldap.config.parameters
Et dans plugins par points d'extensions j'ai :
Points d'extensions multiples
--org.ametys.cms.contenttype.ContentTypeExtensionPoint
---- org.ametys.plugins.userdirectory.Content.employee
------ content-types
-------- employee
Bonjour,
sur une version en 3.8.1, je viens d'installer le plugin annuaire.
Aucun soucis sauf dans le menu "Ajouter un contenu", j'obtiens un point d'interrogation bleu et lorsque j'ajoute ce "type" de contenu j'obtiens :
Unknown metadata set 'main' of type 'edition' for content type 'content-type.employee'
at <map:serialize type="xml"> - resource://org/ametys/cms/workspace/sitemap.xmap:279:33
at <map:transform type="i18n"> - resource://org/ametys/cms/workspace/sitemap.xmap:276:33
at <map:generate type="metadataset"> - resource://org/ametys/cms/workspace/sitemap.xmap:270:55
Sachant que je ne comprends pas trop sa présence à ce niveau là car dans la partie "Ajouter un service", j'ai déjà le service "Ajouter une fiche personne d'une population" de proposer et qui fonctionne très bien.
J'ai utilisé le plugin "employee" ().
Bonne journée