From afcbff4e9ec0dcb1900c3e8e5dc06d390a9e0276 Mon Sep 17 00:00:00 2001
From: Ivan Tyagov <ivan@nexedi.com>
Date: Fri, 1 Aug 2008 15:17:02 +0000
Subject: [PATCH] Add navigation when browsing generated PDF thumbnails.
 Improve code structure.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@22829 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../erp5_dms/PDF_renderHTMLPreviewAsImage.xml |   8 +-
 .../PDF_renderHTMLPreviewNavigation.xml       | 129 +++++++
 .../erp5_dms/PDF_viewHTMLPreviewAsImage.xml   |   1 +
 .../PDF_viewHTMLPreviewAsImage/navigation.xml | 319 ++++++++++++++++++
 bt5/erp5_dms/bt/revision                      |   2 +-
 5 files changed, 456 insertions(+), 3 deletions(-)
 create mode 100644 bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewNavigation.xml
 create mode 100644 bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage/navigation.xml

diff --git a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewAsImage.xml b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewAsImage.xml
index cc9ff16876..c317993a93 100644
--- a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewAsImage.xml
+++ b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewAsImage.xml
@@ -51,10 +51,14 @@
             <key> <string>_text</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-<div tal:define="frame request/frame|python:here.PDF_getPageNumberFromSelectionIndex(request.get(\'selection_index\', 0));\n
+<div class="pdf-preview-content"\n
+     tal:define="frame request/frame|\n
+                   python:here.PDF_getPageNumberFromSelectionIndex(request.get(\'selection_index\', 0));\n
                  display request/display|string:large;\n
                  format request/format|string:jpg;">\n
-<img src="" tal:attributes="src string:${here/absolute_url}/index_html?display=${display}&format=${format}&frame=${frame}">\n
+  <img src="" \n
+      tal:attributes="src\n
+        string:${here/absolute_url}/index_html?display=${display}&format=${format}&frame=${frame}">\n
 </div>
 
 ]]></string> </value>
diff --git a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewNavigation.xml b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewNavigation.xml
new file mode 100644
index 0000000000..a9c6cd3a20
--- /dev/null
+++ b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_renderHTMLPreviewNavigation.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_owner</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+<tal:block tal:define="current_thumbnail_index    \n
+                 request/frame|\n
+                   python:here.PDF_getPageNumberFromSelectionIndex(request.get(\'selection_index\', 0));\n
+                 selection_name request/selection_name;\n
+                 all_thunmbnails python: here.PDF_countThumbnailList()[0][0];\n
+                 next_thunmbnail_index python: current_thumbnail_index + 1;\n
+                 previous_thunmbnail_index python: current_thumbnail_index - 1;\n
+                 parent_doc_url here/absolute_url;\n
+                 base_url string:\n
+                   ${parent_doc_url}/PDF_viewHTMLPreviewAsImage?selection_name=${selection_name}&;">\n
+\n
+  <div class="pdf-preview-navigation">\n
+    <!--\n
+    <span i18n:translate=""\n
+          i18n:domain="ui">Thumbnail</span>: \n
+    <span tal:content="current_thumbnail_index"/>  of <span tal:content="all_thunmbnails"/>\n
+  -->\n
+\n
+    <a href=""\n
+      tal:attributes="href string:${base_url}selection_index=0">\n
+        <img src="images/2leftarrowb.png" \n
+             i18n:translate="alt"\n
+             i18n:domain="ui"\n
+             alt="First"/>\n
+      </a>\n
+\n
+    <a href=""\n
+      tal:condition="python: current_thumbnail_index >= 1"\n
+      tal:attributes="href string:${base_url}selection_index=${previous_thunmbnail_index}">\n
+        <img src="images/1leftarrowb.png" \n
+             i18n:translate="alt"\n
+             i18n:domain="ui"\n
+             alt="Previous"/>\n
+      </a>\n
+\n
+    <a href=""\n
+      style="font-weight: bold;vertical-align:top;"\n
+      i18n:translate=""\n
+      i18n:domain="ui"\n
+      tal:attributes="href string:${parent_doc_url}/view">Exit Preview</a>\n
+\n
+    <a href=""\n
+      i18n:translate=""\n
+      i18n:domain="ui"\n
+      tal:condition="python: all_thunmbnails > next_thunmbnail_index"\n
+      tal:attributes="href string:${base_url}selection_index=${next_thunmbnail_index}">\n
+        <img src="images/1rightarrowb.png" \n
+             i18n:translate="alt"\n
+             i18n:domain="ui"\n
+             alt="Next"/>\n
+    </a>\n
+\n
+    <a href=""\n
+      i18n:translate=""\n
+      i18n:domain="ui"\n
+      tal:attributes="href string:${base_url}selection_index=${all_thunmbnails}">\n
+        <img src="images/2rightarrowb.png" \n
+             i18n:translate="alt"\n
+             i18n:domain="ui"\n
+             alt="Last"/>\n
+    </a>\n
+\n
+\n
+  </div>\n
+</tal:block>
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>PDF_renderHTMLPreviewNavigation</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage.xml b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage.xml
index 99d3b24128..3c0e6e2e77 100644
--- a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage.xml
+++ b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage.xml
@@ -84,6 +84,7 @@
                     <key> <string>bottom</string> </key>
                     <value>
                       <list>
+                        <string>navigation</string>
                         <string>body</string>
                       </list>
                     </value>
diff --git a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage/navigation.xml b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage/navigation.xml
new file mode 100644
index 0000000000..cb6ea418de
--- /dev/null
+++ b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/PDF_viewHTMLPreviewAsImage/navigation.xml
@@ -0,0 +1,319 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="EditorField" module="Products.ERP5Form.EditorField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_owner</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>navigation</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+                <item>
+                    <key> <string>line_too_long</string> </key>
+                    <value> <string>A line was too long.</string> </value>
+                </item>
+                <item>
+                    <key> <string>required_not_found</string> </key>
+                    <value> <string>Input is required but no input given.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_long</string> </key>
+                    <value> <string>You entered too many characters.</string> </value>
+                </item>
+                <item>
+                    <key> <string>too_many_lines</string> </key>
+                    <value> <string>You entered too many lines.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>height</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_linelength</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>text_editor</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>height</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_linelength</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>text_editor</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string>hidden_label</string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>height</string> </key>
+                    <value> <int>5</int> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>max_length</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_linelength</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>max_lines</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>required</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>text_editor</string> </key>
+                    <value> <string>text_area</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>body</string> </value>
+                </item>
+                <item>
+                    <key> <string>unicode</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>whitespace_preserve</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>width</string> </key>
+                    <value> <int>40</int> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TALESMethod" module="Products.Formulator.TALESField"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_text</string> </key>
+            <value> <string>here/PDF_renderHTMLPreviewNavigation</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_dms/bt/revision b/bt5/erp5_dms/bt/revision
index 17a2ddadb4..d17ea3a7d5 100644
--- a/bt5/erp5_dms/bt/revision
+++ b/bt5/erp5_dms/bt/revision
@@ -1 +1 @@
-907
\ No newline at end of file
+908
\ No newline at end of file
-- 
2.30.9