Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#51 Re: Paramétrage et intégration » [Résolu] Pagination de la page search » 10/11/2016 19:50:19

Voici un exemple de script JCR à exécuter dans la console JCR pour supprimer tous les contenus orphelins.

A manipuler avec précaution !
Attention à bien cibler les contenus à supprimer. Dans ce script par exemple je ne cible que le contenu de type Article.
Si vous avez 38000 contenus l'exécution du script va être trop longue, je vous conseille de les supprimer 100 par 100 dans un premier temps et d'éventuellement augmenter le max si ca se passe bien.
Je vous conseille également d'exécuter ce script d'abord en laissant l'instruction "deleteContent" (ligne 36) commentée, puis de la décommenter quand vous serez sûr de supprimer les bons contenus.

var qm = session.getWorkspace().getQueryManager();

function isOrphan(contentId)
{
  var query = qm.createQuery("//element(*, ametys:zoneItem)[@ametys-internal:content='" + contentId + "']", javax.jcr.query.Query.XPATH);
  var nodes = query.execute().getNodes();
  return !nodes.hasNext();
}

function deleteContent (content)
{
  if (content.hasProperty("ametys-internal:workflowRef"))
  {
      var workflowNode = content.getProperty("ametys-internal:workflowRef").getNode();
      workflowNode.remove();
  }
  content.remove();
  session.save();
}

// Recherche des Article
var contentType = "org.ametys.web.default.Content.article";
var query = qm.createQuery("//element(*, ametys:content)[@ametys-internal:contentType='" + contentType + "']", javax.jcr.query.Query.XPATH);

var nodes = query.execute().getNodes();

var count = 0;
var max = 100;
while(nodes.hasNext() && count < max)
{
    var content = nodes.next();
    if (isOrphan(content.getUUID()))
    {
        var title = content.getProperty('ametys:title').getString();
        var lang = content.getProperty('ametys-internal:language').getString();
        var site = "no site";
        if (content.hasProperty("ametys:site"))
        {
            site = content.getProperty('ametys:site').getString();
        }
        println ("Suppression du contenu " + title + "(" + lang + " - " + site + ")");
        // A décommenter quand on est sur !
        // deleteContent(content);
        count++;
    }
}

println (count + " contenus supprimés");

#52 Re: Paramétrage et intégration » [Résolu] Pagination de la page search » 10/11/2016 18:39:38

Bonjour,

C'est possible mais pas simplement ...
Cela nécessite de créer un plugin dans votre application, d'y définir votre propre outil de recherche (en copiant celui défini par défaut) dans le fichier plugin.xml, de le configurer avec un nombre de résultat par page de 100 (par exemple), de définir ensuite un bouton qui ouvre votre outil de recherche (toujours dans plugin.xml) et enfin de déclarer l'utilisatiion de votre bouton à la place de celui par défaut (fichier WEB-INF/param/cms-ribbon.xml).

Si vous pensez que ca en vaut la peine, je peux détailler.

#53 Re: Offre de formation : Ametys ODF » Duplication du catalogue » 05/10/2016 17:10:45

Oui vous pouvez exécutez ce script dans la console du repository (http://[serveur_cms]/_repository)
Ça devrait réparer tous les sous-programmes et conteneurs

importClass(org.ametys.workspaces.repository.ConsoleHelper);

var qm = session.getWorkspace().getQueryManager();
var query = qm.createQuery("//element(*, ametys:subProgramContent)[@ametys-internal:currentStepId=1]", javax.jcr.query.Query.XPATH);
var nodes = query.execute().getNodes();
 
var count = 0;
while (nodes.hasNext())
{
  var node = nodes.next();
  var wRefId = node.getProperty("ametys-internal:workflowRef").getString();
  var wRef = session.getNodeByIdentifier(wRefId);
 
  ConsoleHelper.setProperty(wRef.getNode('oswf:currentStep'), 'oswf:stepId', new java.lang.Long(0));
  wRef.save();
  
  node.getProperty("ametys-internal:currentStepId").remove();
  node.save();
  count++;
}

println(count + " subprograms have been fixed");

query = qm.createQuery("//element(*, ametys:container)[@ametys-internal:currentStepId=1]", javax.jcr.query.Query.XPATH);
nodes = query.execute().getNodes();
 
count = 0;
while (nodes.hasNext())
{
  var node = nodes.next();
  var wRefId = node.getProperty("ametys-internal:workflowRef").getString();
  var wRef = session.getNodeByIdentifier(wRefId);
 
  ConsoleHelper.setProperty(wRef.getNode('oswf:currentStep'), 'oswf:stepId', new java.lang.Long(0));
  wRef.save();
  
  node.getProperty("ametys-internal:currentStepId").remove();
  node.save();
  count++;
}

println(count + " containers have been fixed");

#54 Re: Offre de formation : Ametys ODF » Duplication du catalogue » 04/10/2016 17:22:46

Bonjour,

Oui c'est un bug connu, découvert récemment: 

Nous allons le corriger très prochainement.

Cdt.

#55 Re: Offre de formation : Ametys ODF » Export Fiche RNCP » 31/05/2016 17:03:07

Bonjour,

Non, il n'existe pas aujourd'hui d'export RNCP pour les parcours mais c'est prévu dans de prochaines évolutions sur le module ODF.

Aujourd'hui, dans l'export RNCP de la formation, vous avez accès seulement aux libellés, code, crédits ECTS et identifiant des parcours

<content id="programContent://xxxxx">
      <subprogram title="..." id="subProgramContent://xxxxx" code="FRUAI3182988BPRH6YSRIFL" ects="60"/>
      <subprogram title="..." id="subProgramContent://xxxxx" code="FRUAI3182988BPRH6YSRY5Z" ects="60"/>
</content>

Exemple de XML en entrée : [object%20Object]&userLocale=fr&siteName=www&skin=odf&metadataSetName=main

Ensuite, à partir de son identifiant, Ametys fournit un helper XSLT pour récupérer la structure (parcours/années/elp) d'un parcours. Pour récupérer ses infos en XSL:

<xsl:stylesheets xmlns:odf="org.ametys.odf.OdfXSLTHelper" ....>
    ...
    <xsl:variable name="subProgramStruct" select="odf:getSubProgramStructure($subProgramId)"/>
</xsl:stylesheets>

mais vous n'aurez rien d'autre que les identifiants, libellés et crédits ECTS des sous élements ...

Quelles sont les informations des parcours que vous auriez voulu exporter dans la fiche RNCP ?

#56 Re: Développement » Générer et afficher la premiere page d'un pdf mis en téléchargement » 08/04/2016 14:13:54

Le problème a été corrigé pour la version 1.5.0 du plugin flipbook ()

Pour faire un lien vers un PDF en affichant une image correspondant à la première du PDF vous pouvez faire :

<a href="{resolver:resolve(metadata/[metadataPath]/@type, metadata/[metadataPath]/@path, 'true')}" title="{metadata/[metadataPath]/@filename} ({metadata/[metadataPath]/@size})">
    <img src="{resolver:resolveBoundedImage(concat(metadata/[metadataPath]/@type, '-flipbook'), metadata/[metadataPath]/@path, 200, 200)}" />
</a>
            

#57 Re: Utilisation » PB création d'un formulaire » 05/04/2016 10:01:11

Bonjour,

Quel version de java utilisez-vous ?
Java 8 n'est pas supporté sur les version 3.7.x, il faut utiliser java 6 ou 7.

Je vous renvoie sur un autre sujet du forum qui ressemble fortement à votre problème :

#58 Re: Paramétrage et intégration » Récupérer les données Dublin Core des ressources » 25/01/2016 16:05:01

Les métadonnées Dublin Core sont accessibles dans les service "Contenu d'un répertoire" et "Pièce jointe d'une page" depuis la version 3.7 ()

Elles sont présentes (si non vide) dans les attributs XML des ressources.
La description d'une ressource doit pouvoir être récupérée simplement par

<xsl:value-of select="@dc_description"/>

La XSL utilisée pour la vue "Metadonnée Dublin Core" est celle-ci :

Ca peut sans doute vous aider.

#59 Re: Paramétrage et intégration » Récupérer les données Dublin Core des ressources » 25/01/2016 14:55:13

Bonjour,

A quel niveau souhaitez-vous les récupérer ?

Pour une ressource de l'explorateur de ressources, il y a un bouton "Dublin Core" pour visualiser et éditer les métadonnées Dublin Core.
Il existe aussi une url dans Ametys pour exposer les infos Dublin Core au format RDF, mais c'est une URL qui n'est pas exploitée aujourd'hui, qui nécessite de connaitre l'identifiant de la ressource et qui est authentifié (nécessité d'être loggué sur le CMS)
Exemple sur le serveur de démonstration:
(se logguer avec admin/admin par exemple)

Enfin, il existe une vue "Métadonnées Dublin Core" du service "Contenu d'un répertoire" qui permet d'afficher les méta Dublin Core des fichiers d'un répertoire de l'explorateur de ressources.

#60 Re: Offre de formation : Ametys ODF » [Résolu]Personnaliser l'affichage de l'offre de formation » 11/01/2016 10:43:23

Bonjour,

Dans la version 2.2 de l'ODF, l'arborescence de l'offre de formation est toujours organisée en diplôme puis domaine de formation.
A partir de la version 2.4 de l'ODF, il possible de choisir sur quels champs (nécessairement  énumérés) organiser l'arborescence de l'ODF. Par exemple on peut imaginer d'organiser par domaine puis diplome, ou encore par composante puis domaine, ...

Le service liste des formations n'est donc pas très adapté à ce que vous souhaitez faire, car l'URL de la page de la liste des diplome par domaine dépend du choix d'organisation. Cette page peut par ailleurs ne pas exister si il n'a pas été choisi de construire l'arborescence par diplome puis domaine.

En 2.2, ceci étant figé, cela reste possible mais ce n'est qu'un détournement du service.
Dans Ametys, chaque page possède son propre identifiant et il est possible d'obtenir son URL via cet identifiant.
L'identifiant d'une page "domaine" en 2.2 est sous la force : domain://[degree]/[domain]?rootId=...
Par exemple : domain://XA/ALL?rootId=...
rootId étant l'identifiant de la page racine de l'ODF.

Pour pouvoir faire ce que vous souhaitez, il faudrait donc écrire

<a href="{resolver:resolve('page', 'domain://XA/ALL?rootId=...}">Licence LMD</a>

Reste que je ne suis pas sure qu'en 2.2, il soit possible de facilement récupérer la valeur de rootId ...
Pour savoir ce que fournit le service en entrée de la XSL, le mieux est de faire un <xsl:copy-of select="/"/> dans la XSL.
La valeur du code "degree" et "domain" doit pouvoir être récupérer à partir d'un élément <program>.

#61 Re: Paramétrage et intégration » [Résolu] Affectation de gabarit automatique » 23/12/2015 14:56:47

Bonjour,

Non ce n'est possible car la sélection du gabarit permet également de définir le type de page. Il existe 3 type de pages:
- page de contenus (avec gabarit)
- page de redirection
- page vierge

Pour les pages personnelles, ce sont des pages créées automatiquement, dont le gabarit est positionné en java.

Dans la version 3.7 du CMS, un assistant de création de page permet de créer plus rapidement une page en sélectionnant le gabarit, un contenu/service dans une seule boite de dialogue.

#62 Re: Utilisation » [RESOLU] Problèmes à l'installation. » 13/11/2015 18:18:11

Bonjour,

Pouvez-vous nous transmettre les paramètres de configuration (driver et url) que vous avez saisi pour l'accès à votre base de donnée ?
Quel driver MySQL (jar) avez vous ajouté ?

Laurence

#63 Re: Paramétrage et intégration » Erreur lors de l'édition d'une newsletter » 08/07/2015 18:37:39

Bonjour,

Il semblerait que cela soit un bug introduit par la correction d'un autre bug  hmm


J'ai réouvert le bug chez nous. Nous allons essayer de le traiter rapidement.

#64 Re: Paramétrage et intégration » Tester la présence d'une étiquette sur un contenu » 06/03/2015 18:16:42

Ok donc au final où se trouve le <xsl:copy-of/> ? Dans le fichier these-main.xsl ? Car le resultat de ce copy-of est vraiment très étonnant ...

#65 Re: Paramétrage et intégration » Tester la présence d'une étiquette sur un contenu » 04/03/2015 15:31:19

Avez-vous essayer de faire :

<xsl:if test="head/meta[@name='tags/ACTU']">...</xsl:if>

plutot que

<xsl:if test="html/head/meta[@name='tags/ACTU']">...</xsl:if>

Il me semble dans votre cas - d'après votre copy-of - que vous êtes déjà au niveau du noeud <html>
En tout cas, les données y sont bien, votre problème semble être seulement un problème de path XSL.

En revanche je suis étonnée du résultat de votre copy-of ... Vous dites que vous êtes dans une XSL de rendu d'un contenu nomducontenu-main.xsl, mais dans une telle XSL, le XML d'entrée devrait plutot être:

<view>
     <content id="" title="...">
           <metadata>
                  <title>....</title>
                  ....
           </metadata>
           <tags> 
                  ....
           </tags>
     </content>
</view>

En effet dans la conversation précédente, la problématique se posait dans une remontée de contenu, et non dans le rendu d'un contenu.

#66 Re: Offre de formation : Ametys ODF » Blocage au chargement de l'appli CMS » 13/02/2015 10:14:39

Bonjour,

Oui il vous manque certainement quelque chose .. sans doute des jars. Avez-vous des erreurs dans les logs de l'application (répertoire WEB-INF/logs/) ?
Quelle version avez-vous installé ? La 2.2.0 téléchargeable depuis le site ?

Cdt.

#67 Re: Offre de formation : Ametys ODF » Synchronisation Apogee: paramétrage des ELP » 02/02/2015 19:39:16

Bonjour,

Le fichier de paramétrage Apogee pour les ELP est le fichier WEB-INF/param/odf/apogee/educationalElements.xml

Par défaut, la requête SQL effectuée par le moteur de recherche d'import des ELP est la suivante:

<select id="searchEducationalElements" parameterClass="java.util.Map" resultMap="educationalElementSearchItem">
        SELECT elp.COD_ELP, elp.COD_NEL, elp.LIB_ELP
            FROM element_pedagogi elp
        WHERE elp.ETA_ELP='O'
            AND elp.TEM_SUS_ELP='N'
            <isPropertyAvailable prepend="and" property="type">
                upper(elp.COD_NEL) LIKE CONCAT(upper(#type#), '%')
            </isPropertyAvailable>
            <isPropertyAvailable prepend="and" property="code">
                    upper(elp.COD_ELP) LIKE CONCAT(upper(#code#), '%')
            </isPropertyAvailable>
            <isPropertyAvailable prepend="and" property="title">
                    upper(elp.LIB_ELP) LIKE '%' || upper(#title#) || '%'
            </isPropertyAvailable>
        ORDER BY elp.COD_ELP
</select>

Est-ce celle-ci que vous exécutez dans SQLDevelopper ?

#69 Re: Offre de formation : Ametys ODF » [Synchro APOGEE]probleme avec fichier domain_conversion.xml » 02/02/2015 19:30:14

Bonjour,

Oui c'est comme cela qu'il faut faire. Cette erreur a été remontée dans notre JIRA et corrigée dans les prochaines version d'Ametys ODF :

#70 Re: Développement » Création d'un nouveau service » 28/01/2015 18:07:50

Bonjour,

Non il n'existe pas de mécanisme d'héritage entre service. Il vous faut donc redéfinir tous les paramètres nécessaires dans la déclaration de votre service.

Cdt.

#71 Re: Paramétrage et intégration » Intégration Apogee » 01/12/2014 11:16:45

Bonjour,

Il semble qu'un fichier XML de paramétrage contient une syntaxe XML non valide. La stack trace copiée dans votre message n'étant pas complète je ne sais pas exactement de quel fichier il s'agit. Mais d'après le début du log, je dirais qu'il s'agit du fichier cms-ribbon-default.xml, à la ligne 20.
Pouvez-vous vérifier votre fichier à cette ligne là ?

#72 Re: Paramétrage et intégration » Filtered contents : detecter le premier des contenus remonté » 25/09/2014 18:06:12

En y regardant mieux, c'est tout votre test qui n'est pas bon. Vous êtes déjà au niveau du "content", il faut donc faire

<xsl:template match="content">
       <xsl:variable name="classitem">item<xsl:if test="position() = 1"> active</xsl:variable>
</xsl:template>

#73 Re: Discussion générale » Intégration de Piwik » 25/09/2014 10:27:44

Bonjour,

Oui un nouveau plugin Web Analytics propose l'intégration de piwik. Le plugin n'est pas encore disponible dans une version finale mais vous pouvez dès à présent le tester en télécharger les snapshots (version de développement)  et en vous référant à la documentation

Cdt.

#74 Re: Administration » Version 3.5 - Problème de connexion avec le compte admin/admin » 24/09/2014 19:10:41

Une fois l'application configurée, revenez sur l'écran d'accueil de l'interface d'administration (http://domain:8080/math/cms/_admin/index.html), puis allez sur l'écran de gestion des utilisateurs pour créer un nouvel utilisateur : 

Ensuite suivez les étapes décrites par Raphael dans le 2e post pour vous connecter avec l'utilisateur créé sur le back-office à l'adresse http://domain:8080/math/cms/index.html

Si vous souhaitez modifier le mot de passe pour accéder à l'interface d'administration, qui par défaut est "admin", suivez les instructions ici :

#75 Re: Développement » Convertir un ModifiableContent en WorkflowAwareContent » 22/05/2014 15:44:42

Comment as-tu récupéré le composant ContentWorkflowHelper ?
Il s'agit d'un composant il faut donc le récupérer par un lookup (dans la méthode service de AmetysContentFactory par exemple):

private ContentWorkflowHelper _contentWorkflowHelper;
public void service(ServiceManager manager) throws ServiceException {
_contentWorkflowHelper = (ContentWorkflowHelper) manager.lookup(ContentWorkflowHelper.ROLE)
}

Ces erreurs me font penser que tu as plutôt fait:

ContentWorkflowHelper contentWorkflowHelper = new ContentWorkflowHelper()

Board footer

Powered by FluxBB