From decd413cb0fb290e9ddb185252dee51dc8b6b9ec Mon Sep 17 00:00:00 2001
From: =?utf8?q?Benoi=CC=82t=20Pin?= <pin@cri.ensmp.fr>
Date: Wed, 4 Dec 2013 14:32:48 +0100
Subject: [PATCH] =?utf8?q?Avancement=20sur=20l=E2=80=99upload=20par=20glis?=
 =?utf8?q?ser=20/=20d=C3=A9poser=20dans=20les=20dossiers.=20On=20affiche?=
 =?utf8?q?=20le=20fragment=20html=20apr=C3=A8s=20upload.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

---
 profiles/default/types.xml                        |  0
 profiles/default/types/CMF_Site.xml               |  2 --
 profiles/default/types/Huge_Plinn_Folder.xml      |  6 ++----
 profiles/default/types/Photo.xml                  |  1 +
 profiles/photo/types/Huge_Plinn_Folder.xml        |  1 +
 profiles/photo/types/Photo.xml                    |  1 +
 skins/ajax_scripts/folder_contents_script.js      | 14 +++++++++++++-
 skins/photo_theme/folder_contents_macros.pt       |  4 ++--
 skins/photo_theme/folder_jsupload_snippet.py      | 15 +++++++++++++++
 .../folder_jsupload_snippet_template.pt           |  5 +++++
 10 files changed, 40 insertions(+), 9 deletions(-)
 mode change 100755 => 100644 profiles/default/types.xml
 create mode 100644 skins/photo_theme/folder_jsupload_snippet.py
 create mode 100644 skins/photo_theme/folder_jsupload_snippet_template.pt

diff --git a/profiles/default/types.xml b/profiles/default/types.xml
old mode 100755
new mode 100644
diff --git a/profiles/default/types/CMF_Site.xml b/profiles/default/types/CMF_Site.xml
index d36c06c..b530b34 100644
--- a/profiles/default/types/CMF_Site.xml
+++ b/profiles/default/types/CMF_Site.xml
@@ -18,9 +18,7 @@
   <element value="File"/>
   <element value="Huge Plinn Folder"/>
   <element value="News Item"/>
-  <element value="Order Folder"/>
   <element value="Plinn Document"/>
-  <element value="Huge Plinn Folder"/>
   <element value="Portfolio"/>
   <element value="Topic"/>
  </property>
diff --git a/profiles/default/types/Huge_Plinn_Folder.xml b/profiles/default/types/Huge_Plinn_Folder.xml
index 38799ea..b589b21 100644
--- a/profiles/default/types/Huge_Plinn_Folder.xml
+++ b/profiles/default/types/Huge_Plinn_Folder.xml
@@ -17,17 +17,15 @@
   <element value="Calendar"/>
   <element value="Document"/>
   <element value="File"/>
-  <element value="Link"/>
-  <element value="Mosaic Document"/>
+  <element value="Huge Plinn Folder"/>
   <element value="News Item"/>
   <element value="Plinn Document"/>
-  <element value="Huge Plinn Folder"/>
-  <element value="Huge Plinn Folder"/>
   <element value="Portfolio"/>
   <element value="Topic"/>
  </property>
  <property name="allow_discussion">False</property>
  <alias from="(Default)" to="folder_contents"/>
+ <alias from="jsupload_snippet" to="folder_jsupload_snippet"/>
  <alias from="mkdir" to="createHugePlinnFolder"/>
  <alias from="view" to="folder_contents"/>
  <action title="View" action_id="view" category="object" condition_expr=""
diff --git a/profiles/default/types/Photo.xml b/profiles/default/types/Photo.xml
index 9ab28d1..99bd4bc 100644
--- a/profiles/default/types/Photo.xml
+++ b/profiles/default/types/Photo.xml
@@ -16,6 +16,7 @@
  <property name="allow_discussion">False</property>
  <alias from="(Default)" to="photo_view"/>
  <alias from="info" to="photo_info"/>
+ <alias from="jsupload_snippet" to="photo_gridthumbnail"/>
  <alias from="view" to="photo_view"/>
  <action title="View" action_id="view" category="object" condition_expr=""
     icon_expr="" link_target="" url_expr="string:${object_url}/photo_view"
diff --git a/profiles/photo/types/Huge_Plinn_Folder.xml b/profiles/photo/types/Huge_Plinn_Folder.xml
index 79b48ac..b589b21 100644
--- a/profiles/photo/types/Huge_Plinn_Folder.xml
+++ b/profiles/photo/types/Huge_Plinn_Folder.xml
@@ -25,6 +25,7 @@
  </property>
  <property name="allow_discussion">False</property>
  <alias from="(Default)" to="folder_contents"/>
+ <alias from="jsupload_snippet" to="folder_jsupload_snippet"/>
  <alias from="mkdir" to="createHugePlinnFolder"/>
  <alias from="view" to="folder_contents"/>
  <action title="View" action_id="view" category="object" condition_expr=""
diff --git a/profiles/photo/types/Photo.xml b/profiles/photo/types/Photo.xml
index 9ab28d1..99bd4bc 100644
--- a/profiles/photo/types/Photo.xml
+++ b/profiles/photo/types/Photo.xml
@@ -16,6 +16,7 @@
  <property name="allow_discussion">False</property>
  <alias from="(Default)" to="photo_view"/>
  <alias from="info" to="photo_info"/>
+ <alias from="jsupload_snippet" to="photo_gridthumbnail"/>
  <alias from="view" to="photo_view"/>
  <action title="View" action_id="view" category="object" condition_expr=""
     icon_expr="" link_target="" url_expr="string:${object_url}/photo_view"
diff --git a/skins/ajax_scripts/folder_contents_script.js b/skins/ajax_scripts/folder_contents_script.js
index dc31b4c..7204a4e 100644
--- a/skins/ajax_scripts/folder_contents_script.js
+++ b/skins/ajax_scripts/folder_contents_script.js
@@ -290,11 +290,23 @@ DDFolderUploader.prototype.handleFiles = function(files) {
 };
 
 DDFolderUploader.prototype.beforeUpload = function(item) {
+  this.uploadedItem = item;
 	// To be implemented by decendant.
 };
 
 DDFolderUploader.prototype.uploadCompleteHandlerCB = function(req) {
-	// To be implemented by descendant.
+	var item = this.uploadedItem;
+	var row = getCopyOfNode(req.responseXML.documentElement.firstChild);
+  row.className = item.className;
+
+	if (req.status === 200) {
+		// update
+    console.log('todo');
+	}
+	else if(req.status === 201) {
+		// creation
+		this.listing.replaceChild(row, item);
+	}
 };
 
 DDFolderUploader.prototype.progressHandlerCB = function(progress) {
diff --git a/skins/photo_theme/folder_contents_macros.pt b/skins/photo_theme/folder_contents_macros.pt
index bd8e7f5..7d25a02 100644
--- a/skins/photo_theme/folder_contents_macros.pt
+++ b/skins/photo_theme/folder_contents_macros.pt
@@ -39,7 +39,7 @@
 				</tr>
 			</thead>
 			<tbody id="FolderListingBody">
-<tbody tal:repeat="item_info listItemInfos" tal:omit-tag="">
+<tbody tal:repeat="item_info listItemInfos" tal:omit-tag="" metal:define-macro="itemListing">
 		    <tr class="" tal:attributes="class python: (even and 'even') or 'odd'" tal:define="even repeat/item_info/even">
 		      <td><img src="." alt="lock" height="16" width="16" border="0"
 		               tal:condition="python:not isAnon and item_info['lock']"
@@ -112,7 +112,7 @@
 			}
 			
 			var uploadUrl = absolute_url() + '/put_upload';
-      // new DDFolderUploader(document.getElementById('ForematterCell'), uploadUrl, listing);
+      new DDFolderUploader(document.getElementById('ForematterCell'), uploadUrl, listing);
 
 		}());
 		</script>
diff --git a/skins/photo_theme/folder_jsupload_snippet.py b/skins/photo_theme/folder_jsupload_snippet.py
new file mode 100644
index 0000000..f932675
--- /dev/null
+++ b/skins/photo_theme/folder_jsupload_snippet.py
@@ -0,0 +1,15 @@
+##parameters=ob
+from Products.CMFCore.utils import getUtilityByInterfaceName
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
+locale_date_fmt = context.locale_date_fmt()
+infos = {'checkbox' : True,
+         'url' : ob.absolute_url(),
+         'lock' : False,
+         'modified' : ob.modified().strftime(locale_date_fmt),
+         'title_or_id' : ob.title_or_id(),
+         'position' : context.getObjectPosition(ob.getId()),
+         'type' : ob.Type() or None,
+         'id' : ob.getId(),
+         'icon': '%s/%s' % (utool(), ob.getIcon())}
+
+return context.folder_jsupload_snippet_template(listItemInfos=[infos])
\ No newline at end of file
diff --git a/skins/photo_theme/folder_jsupload_snippet_template.pt b/skins/photo_theme/folder_jsupload_snippet_template.pt
new file mode 100644
index 0000000..8b1e813
--- /dev/null
+++ b/skins/photo_theme/folder_jsupload_snippet_template.pt
@@ -0,0 +1,5 @@
+<metal:block metal:use-macro="here/main_template_macros/macros/global_defines"/>
+<tal:block tal:define="listItemInfos options/listItemInfos">
+  <div metal:use-macro="here/folder_contents_macros/macros/itemListing"/>
+</tal:block>
+<tal:block tal:define="global dummy python:request.RESPONSE.setHeader('Content-Type', 'text/xml;;charset=utf-8')" />
\ No newline at end of file
-- 
2.20.1