Index: main/plugin-survey/i18n/messages_en.xml
===================================================================
--- main/plugin-survey/i18n/messages_en.xml	(revision 34469)
+++ main/plugin-survey/i18n/messages_en.xml	(working copy)
@@ -198,6 +198,9 @@
     <message key="PLUGINS_SURVEY_EXPORT_SESSIONS_LABEL">Export user answers</message>
     <message key="PLUGINS_SURVEY_EXPORT_SESSIONS_DESC">Export the user answers as an excel spreadsheet.</message>
     
+    <message key="PLUGINS_SURVEY_EXPORT_SUMMARY_SESSIONS_LABEL">Export summary</message>
+    <message key="PLUGINS_SURVEY_EXPORT_SUMMARY_SESSIONS_DESC">Export the summary of user answers as an excel spreadsheet.</message>
+    
     <message key="PLUGINS_SURVEY_EXPORT_HTML_LABEL">HTML</message>
    	<message key="PLUGINS_SURVEY_EXPORT_HTML_DESC">Export survey's HTML code to be integrated into an external page or an email.</message>
     <message key="PLUGINS_SURVEY_EXPORT_HTML_HINT">Copy / paste the following HTML code to embed the survey in an external page or an email.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Be careful, no formatting information or field validation is present.&lt;/b&gt;&lt;br/&gt;This feature is for advanced users and should only be used for simple surveys, without field validation and without branch logic.</message>
Index: main/plugin-survey/i18n/messages_fr.xml
===================================================================
--- main/plugin-survey/i18n/messages_fr.xml	(revision 34469)
+++ main/plugin-survey/i18n/messages_fr.xml	(working copy)
@@ -196,7 +196,10 @@
    	
    	<message key="PLUGINS_SURVEY_EXPORT_SESSIONS_LABEL">Exporter les réponses</message>
    	<message key="PLUGINS_SURVEY_EXPORT_SESSIONS_DESC">Exporte les réponses des utilisateurs dans un tableau au format excel.</message>
-   	
+
+    <message key="PLUGINS_SURVEY_EXPORT_SUMMARY_SESSIONS_LABEL">Export synthétique</message>
+    <message key="PLUGINS_SURVEY_EXPORT_SUMMARY_SESSIONS_DESC">Exporte une version synthétique des réponses des utilisateurs dans un tableau au format excel.</message>
+    
    	<message key="PLUGINS_SURVEY_EXPORT_HTML_LABEL">Code HTML</message>
    	<message key="PLUGINS_SURVEY_EXPORT_HTML_DESC">Exporte l'enquête au format HTML pour être intégrée dans une page externe ou un mail.</message>
     <message key="PLUGINS_SURVEY_EXPORT_HTML_HINT">Copiez/collez le code HTML suivant pour intégrer l'enquête dans une page externe ou un mail.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Attention, aucune information de formatage ou de validation des champs n'est présente.&lt;/b&gt;&lt;br/&gt;Cette fonctionalité est réservée aux utilisateurs avertis et ne doit être utilisée que pour des enquêtes simples, sans validation de champs et sans logique de branches.</message>
Index: main/plugin-survey/plugin.xml
===================================================================
--- main/plugin-survey/plugin.xml	(revision 34469)
+++ main/plugin-survey/plugin.xml	(working copy)
@@ -360,8 +360,8 @@
             
             <extension id="org.ametys.survey.ExportXls" 
                        point="org.ametys.cms.workspace.ribbon.RibbonControlsManager" 
-                       class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement">
-                <action class="org.ametys.ribbon.control.button.ActionSelectionButton">
+                       class="org.ametys.cms.clientsideelement.StaticMenu">
+                <action class="org.ametys.cms.ribbon.button.ActionSelectionMenu">
                     <param name="action">org.ametys.survey.Survey.exportXls</param>
                     <param name="target-type">^survey$</param>
                     
@@ -372,7 +372,22 @@
                     <param name="icon-medium" file="true">img/stats/user_sessions_32.png</param>
                     <param name="icon-large" file="true">img/stats/user_sessions_48.png</param>
                 </action>
+                <menu-item id="org.ametys.survey.ExportXls.export">
+                    <param name="action">org.ametys.survey.Survey.exportXls</param>
+
+                    <param name="label" i18n="true">PLUGINS_SURVEY_EXPORT_SESSIONS_LABEL</param>
+                    <param name="default-description" i18n="true">PLUGINS_SURVEY_EXPORT_SESSIONS_DESC</param>
+                    <param name="iconSmall" file="true">img/stats/user_sessions_16.png</param>
+                </menu-item>
+                <menu-item id="org.ametys.survey.ExportXls.summaryExport">
+                    <param name="action">org.ametys.survey.Survey.summaryExportXls</param>
+
+                    <param name="label" i18n="true">PLUGINS_SURVEY_EXPORT_SUMMARY_SESSIONS_LABEL</param>
+                    <param name="default-description" i18n="true">PLUGINS_SURVEY_EXPORT_SUMMARY_SESSIONS_DESC</param>
+                    <param name="iconSmall" file="true">img/stats/user_sessions_16.png</param>
+                </menu-item>
                 <scripts>
+                    <file plugin="cms">js/org/ametys/cms/ribbon/button/ActionSelectionMenu.js</file>
                     <file>js/org/ametys/survey/SurveyAction.i18n.js</file>
                 </scripts>
                 <right>Plugins_Survey_Right_Handle</right>
Index: main/plugin-survey/resources/js/org/ametys/survey/SurveyAction.i18n.js
===================================================================
--- main/plugin-survey/resources/js/org/ametys/survey/SurveyAction.i18n.js	(revision 34469)
+++ main/plugin-survey/resources/js/org/ametys/survey/SurveyAction.i18n.js	(working copy)
@@ -562,6 +562,12 @@
  */
 org.ametys.survey.Survey.exportXls = function(id, configuration, pluginName)
 {
+	// If called from a menu item
+	if (typeof arguments[0] == "object")
+	{
+		pluginName = arguments[0].ribbonControl.getPluginName();
+	}
+	
     var targets = org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets();
     var target = org.ametys.messagebus.message.MessageTargetHelper.findFirst(targets, function(target) { return target.getType() == 'survey' });
     
@@ -577,6 +583,25 @@
     window.location.href = getPluginDirectUrl(pluginName) + url;
 }
 
+org.ametys.survey.Survey.summaryExportXls = function(button, configuration, index)
+{
+	var pluginName = button.ribbonControl.getPluginName();
+	
+    var targets = org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets();
+    var target = org.ametys.messagebus.message.MessageTargetHelper.findFirst(targets, function(target) { return target.getType() == 'survey' });
+    
+    if (target == null)
+    {
+        return;
+    }
+    
+    var surveyId = target.getParameters().id;
+    
+    var url = '/survey/summary/sessions.xls?id=' + surveyId;
+    
+    window.location.href = getPluginDirectUrl(pluginName) + url;
+}
+
 org.ametys.survey.Survey.export2Html = function(id, configuration, pluginName)
 {
     var targets = org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets();
Index: main/plugin-survey/sitemap.xmap
===================================================================
--- main/plugin-survey/sitemap.xmap	(revision 34469)
+++ main/plugin-survey/sitemap.xmap	(working copy)
@@ -492,6 +492,23 @@
                     <map:serialize type="html-xls"/>
                 </map:act>
             </map:match>
+
+			<map:match pattern="survey/summary/sessions.xls">
+				<map:act type="set-survey-header">
+					<map:parameter name="surveyId" value="{request-param:id}"/>
+					<map:parameter name="suffix" value=".xls"/>
+					
+					<map:generate type="statistics">
+						<map:parameter name="id" value="{request-param:id}"/>
+					</map:generate>
+					<map:transform src="stylesheets/statistics/summary-export-xls.xsl"/>
+					<map:transform type="i18n">
+						<map:parameter name="locale" value="{locale:locale}"/>
+						<map:parameter name="plugin" value="{request-attr:pluginName}"/>
+					</map:transform>
+					<map:serialize type="html-xls"/>
+				</map:act>
+			</map:match>
 			
 			<map:match pattern="survey/scheduled-dates">
 				<map:generate type="survey-scheduled-dates"/>
Index: main/plugin-survey/stylesheets/statistics/summary-export-xls.xsl
===================================================================
--- main/plugin-survey/stylesheets/statistics/summary-export-xls.xsl	(revision 0)
+++ main/plugin-survey/stylesheets/statistics/summary-export-xls.xsl	(revision 0)
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2015 Anyware Services
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+   -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+                xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
+    
+    <xsl:param name="contextPath" />
+    <xsl:param name="cms-context" />
+    <xsl:param name="plugin" />
+    <xsl:param name="site" />
+    
+    <xsl:template match="/survey-statistics">
+        <html>
+            <head />
+            <body>
+                <div>
+                    <i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_GLOBAL_TEXT_1"/>
+                    <xsl:value-of select="@sessions" />
+                    <i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_GLOBAL_TEXT_2"/>
+                </div>
+                <br />
+                
+                <xsl:apply-templates select="question"/>
+            </body>
+        </html>
+    </xsl:template>
+    
+    <xsl:template match="question">
+        <table>
+            <thead>
+                <xsl:choose>
+                    <xsl:when test="@type = 'FREE_TEXT' or @type='MULTILINE_FREE_TEXT' or @type = 'SINGLE_CHOICE' or @type='MULTIPLE_CHOICE'">
+                        <xsl:call-template name="question-simple-header"/>
+                    </xsl:when>
+                    <xsl:when test="@type = 'SINGLE_MATRIX' or @type='MULTIPLE_MATRIX'">
+                        <xsl:call-template name="question-matrix-header"/>
+                    </xsl:when>
+                </xsl:choose>
+            </thead>
+            <tbody>
+               <xsl:choose>
+                   <xsl:when test="@type = 'FREE_TEXT' or @type='MULTILINE_FREE_TEXT'">
+                       <xsl:call-template name="question-text"/>
+                   </xsl:when>
+                   <xsl:when test="@type = 'SINGLE_CHOICE' or @type='MULTIPLE_CHOICE'">
+                       <xsl:apply-templates select="option/choice" mode="question-choice" />
+                   </xsl:when>
+                   <xsl:when test="@type = 'SINGLE_MATRIX' or @type='MULTIPLE_MATRIX'">
+                       <xsl:call-template name="question-matrix" />
+                   </xsl:when>
+               </xsl:choose>
+            </tbody>
+        </table>
+        
+        <!-- Empty row between tables -->
+        <br />
+    </xsl:template>
+    
+    <xsl:template name="question-header-title">
+        <th>
+            <i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_QUESTION_PANEL_TITLE_1"/><xsl:value-of select="position()" /><i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_QUESTION_PANEL_TITLE_2"/>
+            <xsl:value-of select="@title" />
+        </th>
+    </xsl:template>
+    
+    <xsl:template name="question-simple-header">
+        <tr>
+            <xsl:call-template name="question-header-title" />
+            <td>
+                <i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_CHOICE_COUNT"/>
+            </td>
+            <td>
+                <i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_CHOICE_PERCENT"/>
+            </td>
+        </tr>
+    </xsl:template>
+    
+    <xsl:template name="question-matrix-header">
+        <tr>
+            <xsl:call-template name="question-header-title" />
+            <xsl:apply-templates select="option[1]/choice" mode="header" />
+        </tr>
+    </xsl:template>
+    
+    <xsl:template match="choice" mode="header">
+        <th colspan="2">
+            <xsl:value-of select="@label" />
+        </th>
+    </xsl:template>
+    
+    <xsl:template name="question-text">
+        <tr>
+            <th>
+                <i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_ANSWERED" />
+            </th>
+            <xsl:call-template name="output-choice-values"><xsl:with-param name="count" select="option/choice[@value = 'answered']/@count" /></xsl:call-template>
+        </tr>
+        <tr>
+            <th>
+                <i18n:text i18n:key="PLUGINS_SURVEY_STATISTICS_NOT_ANSWERED" />
+            </th>
+            <xsl:call-template name="output-choice-values"><xsl:with-param name="count" select="option/choice[@value = 'empty']/@count" /></xsl:call-template>
+        </tr>
+    </xsl:template>
+    
+    <xsl:template match="choice" mode="question-choice">
+        <tr>
+            <td>
+                <xsl:value-of select="@label" />
+            </td>
+            <xsl:call-template name="output-choice-values"><xsl:with-param name="count" select="@count" /></xsl:call-template>
+        </tr>
+    </xsl:template>
+    
+    <xsl:template name="question-matrix">
+        <xsl:for-each select="option">
+            <tr>
+                <td>
+                    <xsl:value-of select="@label" />
+                </td>
+                <xsl:for-each select="choice">
+                    <xsl:call-template name="output-choice-values"><xsl:with-param name="count" select="@count" /></xsl:call-template>
+                </xsl:for-each>
+            </tr>
+        </xsl:for-each>
+    </xsl:template>
+    
+    <xsl:template name="output-choice-values">
+        <xsl:param name="count" />
+        
+        <td>
+            <xsl:value-of select="$count" />
+        </td>
+        <td>
+            <xsl:value-of select="format-number($count div /survey-statistics/@sessions, '###.##%')" />
+        </td>
+    </xsl:template>
+    
+</xsl:stylesheet>
