Recherche des contenus proposés

Moteur de recherche back office

Chaque plugin cherchera surement à pouvoir rechercher tous les contenus proposés pour pouvoir faire de l'administration.

Voici un exemple de déclaration de l'outils de recherche :

<extension id="org.ametys.plugins.classified.ads.Search"   
 point="org.ametys.core.ui.RibbonControlsManager"   
 class="org.ametys.core.ui.StaticClientSideElement">   
  <class name="Ametys.ribbon.element.ui.button.OpenToolButtonController">   
   <opentool-id>uitool-web-search</opentool-id>   
   <opentool-params>   
    <id>search-ui.classified.ads</id>   
    <title i18n="true">PLUGINS_CLASSIFIED_ADS_CONTENT_ADS_SEARCH_LABEL</title>   
    <description i18n="true">PLUGINS_CLASSIFIED_ADS_CONTENT_ADS_SEARCH_DESC</description>   
    <icon-glyph>ametysicon-newspaper1</icon-glyph>   
    <icon-decorator>decorator-ametysicon-magnifier12</icon-decorator>   
    <icon-decorator-type>action-default</icon-decorator-type>   
   </opentool-params>   
  <label i18n="true">PLUGINS_CLASSIFIED_ADS_CONTENT_ADS_SEARCH_LABEL</label>   
  <description i18n="true">PLUGINS_CLASSIFIED_ADS_CONTENT_ADS_SEARCH_DESC</description>   
  <icon-glyph>ametysicon-newspaper1</icon-glyph>   
  <icon-decorator>decorator-ametysicon-magnifier12</icon-decorator>   
  <icon-decorator-type>action-default</icon-decorator-type>   
  </class>   
  <right context-prefix="/cms">Classified_Ads_Right_BOSearch</right>   
  <depends>   
   <org.ametys.core.ui.UIToolsFactoriesManager>uitool-web-search</org.ametys.core.ui.UIToolsFactoriesManager>   
  </depends>   
 </extension>    

Il faut aussi définir un model de recherche associé (search-ui.classified.ads)

<extension id="search-ui.classified.ads"  
 point="org.ametys.cms.search.ui.model.SearchUIModelExtensionPoint"  
 config="search/ads.xml">  
 </extension>  

Et le fichier ads.xml qui se situe dans le dossier search de la racine de votre projet (search/ads.xml)

<extension class="org.ametys.cms.search.ui.model.StaticSearchUIModel">  
 <SearchModel>  
 <content-types>  
 <content-type id="org.ametys.plugins.classified.ads.Content.ads"/>  
 </content-types>  
  
 <simple-search-criteria>  
   <criteria field-ref="title">  
     <test-operator>search</test-operator>  
   </criteria>  
   <criteria field-ref="title">  
     <test-operator>like</test-operator>  
   <widget>edition.hidden</widget>  
   </criteria>  
   <criteria field-ref="category" />  
   <criteria system-ref="lastModified">  
     <label i18n="true">plugin.cms:UITOOL_SEARCH_CONTENT_LASTMODIFIED_AFTER</label>  
     <test-operator>gt</test-operator>  
   </criteria>  
   <criteria system-ref="lastModified">  
     <label i18n="true">plugin.cms:UITOOL_SEARCH_CONTENT_LASTMODIFIED_BEFORE</label>  
     <test-operator>lt</test-operator>  
   </criteria>  
   <criteria system-ref="contentLanguage">  
     <widget>edition.select-language</widget>  
     <default-value>CURRENT</default-value>  
     <validation>  
       <mandatory/>  
     </validation>  
   </criteria>  
   <criteria system-ref="contributor"/>  
   <criteria system-ref="workflowStep">  
     <default-value></default-value>  
   </criteria>  
   </simple-search-criteria>  
  
   <facets>  
     <criteria system-ref="contributor"/>  
     <criteria system-ref="workflowStep"/>  
     <criteria system-ref="contentTypes"/>  
     <criteria field-ref="category"/>  
   </facets>  
  
   <columns>  
     <default>  
       <column metadata-ref="title">  
         <renderer>Ametys.plugins.cms.search.SearchGridHelper.renderTitle</renderer>  
       </column>  
       <column metadata-ref="category"/>  
       <column system-ref="contentLanguage"/>  
       <column system-ref="contributor"/>  
       <column system-ref="lastModified"/>  
       <column system-ref="workflowStep"/>  
       <column system-ref="contentTypes"/>  
     </default>  
   </columns>  
 </SearchModel>  
</extension>  

Il ne reste plus qu'à définir ce bouton dans le ribbon.
Pour cela, déclarer un ribbon.xml si ce n'est pas la cas (ici on défini un cms-ribbon.xml dans un dossier ribbon à la racine de votre projet)

<extensions> 
 <extension id="org.ametys.plugins.classified.ribbon.Imports" 
 point="org.ametys.core.ui.RibbonImportManager" 
 class="org.ametys.core.ui.StaticRibbonImportManager"> 
   <workspace match="web"> 
     <file>ribbon/cms-ribbon.xml</file> 
   </workspace> 
 </extension> 
</extensions> 

Et dans le fichier cms-ribbon.xml, il reste à déclarer le bouton :

<tab label="plugin.cms:RIBBON_TABS_TAB_HOME_LABEL" override="true"> 
 <groups> 
   <group label="plugin.cms:RIBBON_TABS_TAB_HOME_GROUPS_GROUP_TOOL_LABEL" override="true" controlsOrder="0.30"> 
     <control id="org.ametys.plugins.classified.ads.Search"/> 
   </group> 
 </groups> 
</tab> 

Exemple d'utilisation

Voir le plugin Classified-Ads