From: Benoît Pin <pin@cri.ensmp.fr> Date: Wed, 4 Dec 2013 13:32:48 +0000 (+0100) Subject: Avancement sur l’upload par glisser / déposer dans les dossiers. On affiche le fragme... X-Git-Url: https://svn.cri.ensmp.fr/git/Plinn.git/commitdiff_plain/decd413cb0fb290e9ddb185252dee51dc8b6b9ec Avancement sur l’upload par glisser / déposer dans les dossiers. On affiche le fragment html après upload. --- 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