We can now drag and drop media items in the media preview area and sort them as we see fit. However, I don't see an obvious way to use the sort order in a gallery or page.
Example:
I have 100 media items in a folder that I want to display in a gallery.
I have added a checkbox field "showInGallery" to the Memdia Type.
I understand how to build an XSLT to show only the images with a check in showInGallery field, but I don't want them ordered by the nodeID or sortOrder corrosponding to the TREE. I would like to be able to use the "sort order" derived from the drap and drop order on the media preview page.
WHERE is the information stored and how do I access it. It is clearly NOT stored in the ContentXML table or anywhere else I can find it.
In order to do a sort like it's done in the back office you'd have to use the data api's (not cached versions). This could be a bit database intensive for front-end rendering.
Why is there not a "SortOrder" made available for XSLT or other code. Is it unreasonable to think that somebody would want to SORT media items for display, just as they SORT other node and data types?
So media types (Images in this case) need to have a DisplayOrder property. That property should be updated for each item in the folder when media items are ordered in the bag end by drag and drop. Clearly the "default" order would be the SortOrder property used to populate the node tree.
In that way, say we have a folder with 100 images. A photo gallery page could LOOP through all 100 images to populate the thumbnails on the gallery page, instead of the developer having to drop them in during site creation. Are we saying that this is too code/DB intensive? (Honest questions, as I don't know).
Cached media does expose a sort order, it's in the XML that is resolved when you use library.GetMedia (assuming that is how you've attempted to do this and it's not working?) You asked how it's done in the back office and I've mentioned that its using the data api's not front-end apis but I didn't say that you can't sort on the front-end... i think that's what this discussion is all about... and there's probably some isuse there that it is not working properly for everyone. I'm trying to look in to this now so you'll have to give me some time to figure out what is going on, if there's a bug and how to do it properly on the front end. stay tuned.
I have not attempted to write any code yet, as I was not clear on what property to sort by. When I went looking, I got more confused :)
The end goal was to be able to build a gallery template with a content picker that takes a media folder as the parameter. I added a property to the IMAGE media type called "ShowInGallery" so that my XSLT could loop through the folder and only populate the gallery page (on the front end) with the selected images. The problem is that I need to control the order in which the images are displayed and that is where I stumbled.
I was just looking for a way to build gallery pages by sorting using drag and drop in the back end and not having to resort to picking or inserting each image into the content editor.. Using the traditional method, If (when) changes need to be made gallery, the entire page content must be edited or shuffled. The "new" method I am trying to implement would simply mean sorting the items in the backend and checking, or uncheching the ShowInGallery checkbox for each item. Makes sense, or am I attempting to do something that is not going to be possible?
@William we currently already have drag/drop support in the back office for sorting, you just click on the folder node (in media section) and the UI displays on the right and you can move stuff around.
This is a big bug though: http://issues.umbraco.org/issue/U4-1653 and this will be preventing this all from working properly. We'll be releasing a patch release very very soon for it.
Once fixed the library.GetMedia call for xslt will ensure that the media cache is always up to date and the sort order in the xml returned is correct.
This should all be currently possible but you'd have to bump the web.config to clear the cache each time you build a gallery and sort nodes... not ideal. Of course once this patch is out then should all be fine.
I was aware that there is drag and drop sort capability in the back office but as mentioned, was not aware that sorting in the back office exposed that sort order at page load time to macros, etc.
I think that answers my question. I will try and build my gallery page and see what I come up with.
This will list out all child Image items of media item (1050.. which could be a folder) and it is order by the 'sortOrder'. Each list item renders out the node name and it's current sortOrder value.
I haven't written a demo yet in MVC/Razor but is probably nicer (... since i'm not a fan of xslt :P ), however I think there's another issue with Examine and sorting media and in MVC/Razor it uses the Examine cache to get some media data which is much faster. I have to look in to that bug soon too and see if it still exists.
I can not get the GetMedia call to work. I have tried using the code above and numerous other itterations from the forum, regardless of the NodeID I use (explicity taken from the media section, or passed in by a media picker and macro.
I can print the value-of select and return the chosen ID, so that that works, but a value-of from within the for-each loop never prints (again regardless of the method I use.
So... we are 6.whatever and the back office drag and drop media sort STILL DOES NOT WORK.
Really folks... this is getting old. Even better, the "issue" link posted above does not work becuase we no longer use the issue tracker. Why do we abandonden so much needed content every 2 or so years. Is it too much to ask that the old content be linked or available somehow. I spend more time farting around with the stupid project that it is worth, 90% of that time is spent tracking down documentation for upgrades, bugs and undocumented stuff that should be documented.
Not sure what link you are referring to but the link listed previous to this post is this one: http://issues.umbraco.org/issue/U4-1653 which works just fine. I've also just tested this in 6.0.7 and sorting of media items also works just fine. I've created a screencast demonstrating this: http://screencast.com/t/KTzRD8tUuT
The link is working now, for some reason it was not when I tried the other day.
Thank you for taking the time to post the screencast. I think my comments and frustration have confused my current issue. I have been able to get the sorting to work in the same fashion you showed in the screencast. However, it was my understanding that we would be able to SORT the media items in the right hand panel by dragging their icons around instead of having to sort in the columnar list. Was I mistaken, or is this still a "broken" feature?
There was also issue U4-1027 which I know had a workaround for the 4.x branch, but in latest 6.1.2 this seems to work correctly out of the box for me now? I would recommend if not working for you, see if you can check the Firebug console or the Chrome Inspector to look for any obvious errors?
I am not so sure why this is so hard to communicate:
I have upgraded to 6.1.2
In the backend media section there are TWO areas. The lefthand area where the TREE is and the righthand areas where the PREVIEW is.
What works:
Media sorting works in the TREE when you right click and choose SORT. If the tree or node is refreshed the sorted items retain their position. GetMedia reflects (for the most part) the new sort order.
What DOES NOT WORK:
Dragging to arrange media items in the TREE directly without choosing "sort" from the right click menu
Dragging to arrange media items in the PREVIEW area.
You can drag and drop in either area until your heart is content, but when you refresh the node, the sort order is not saved.
So my statement: It was my understanding that dragging directly in the tree and/or in the preview area was to be a feature!
My question: If the above is true, why is this still broken over a year later and why is it getting no attention?
Drag/drop in the tree has never been a feature of Umbraco, it's not on the road-map (currently) but there is a pending pull request to support this but it requires further review feedback and updates to make sure it works properly and doesn't cause more problems than good.
Drag/drop in the RIGHT hand side does indeed work, I've tested a fresh install of 6.1.2 and in the 6.1.3 branch with the same result.
So, if it is not working for you then we need to figure out why. Captial letters aren't going to help anyone so lets start making gains and figure out how to replicate the issue. Are you getting javascript errors when performing this action?
Thank you for the clarification with regard to the tree functionality.
As for my use of CAPITALS... They were use to ensure clarity, as there has been some confusion with regard to what I have been trying to articulate (likely my fault).
6.1.0 upgraded from 6.0 no JS errors in IE10 or Chrome
Functionality not working in either browser. I can drag the thumbnails around, but the order is not saved when the nodes are reloaded.
@William Try deleting ~/App_Data/Temp/ClientDependency/*.* and then increasing the version in ClientDependency.config by 1 and see if that helps.
If it doesn't, you could check in Fiddler what the results is of the call to /umbraco/webservices/nodeSorter.asmx/UpdateSortOrder is. The response body should be empty.
All (3) on the "image" tab. Their purpose is self explanatory. Could this be the issue?
FWIW: issues.umbraco.org appears to be down for the last hour or so
No idea how to use fiddler but I tried: I am seeing the NodeSorter.asmx/UpdateSortOrder returning what appears to be an error in the result list (500)
Server Error in '/' Application.
Request format is unrecognized for URL unexpectedly ending in '/UpdateSortOrder'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/UpdateSortOrder'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
We'll update this code (probably for 6.1.4 to use Web API calls instead of webservices, that will prevent other people from running into the same issue).
Get Sort Order of Media Items
We can now drag and drop media items in the media preview area and sort them as we see fit. However, I don't see an obvious way to use the sort order in a gallery or page.
Example:
I have 100 media items in a folder that I want to display in a gallery.
I have added a checkbox field "showInGallery" to the Memdia Type.
I understand how to build an XSLT to show only the images with a check in showInGallery field, but I don't want them ordered by the nodeID or sortOrder corrosponding to the TREE. I would like to be able to use the "sort order" derived from the drap and drop order on the media preview page.
WHERE is the information stored and how do I access it. It is clearly NOT stored in the ContentXML table or anywhere else I can find it.
A LITTLE HELP HERE FOLKS... Please...
Is this the same issue from 2 years ago?
http://our.umbraco.org/forum/core/41-feedback/12159-Refresh-media-cache-after-sorting
Anybody?
I've just logged this issue... I have a feeling this is most likely the cause:
http://issues.umbraco.org/issue/U4-1653
In order to do a sort like it's done in the back office you'd have to use the data api's (not cached versions). This could be a bit database intensive for front-end rendering.
I don't get it...
Why is there not a "SortOrder" made available for XSLT or other code. Is it unreasonable to think that somebody would want to SORT media items for display, just as they SORT other node and data types?
So media types (Images in this case) need to have a DisplayOrder property. That property should be updated for each item in the folder when media items are ordered in the bag end by drag and drop. Clearly the "default" order would be the SortOrder property used to populate the node tree.
In that way, say we have a folder with 100 images. A photo gallery page could LOOP through all 100 images to populate the thumbnails on the gallery page, instead of the developer having to drop them in during site creation. Are we saying that this is too code/DB intensive? (Honest questions, as I don't know).
Cached media does expose a sort order, it's in the XML that is resolved when you use library.GetMedia (assuming that is how you've attempted to do this and it's not working?) You asked how it's done in the back office and I've mentioned that its using the data api's not front-end apis but I didn't say that you can't sort on the front-end... i think that's what this discussion is all about... and there's probably some isuse there that it is not working properly for everyone. I'm trying to look in to this now so you'll have to give me some time to figure out what is going on, if there's a bug and how to do it properly on the front end. stay tuned.
I have not attempted to write any code yet, as I was not clear on what property to sort by. When I went looking, I got more confused :)
The end goal was to be able to build a gallery template with a content picker that takes a media folder as the parameter. I added a property to the IMAGE media type called "ShowInGallery" so that my XSLT could loop through the folder and only populate the gallery page (on the front end) with the selected images. The problem is that I need to control the order in which the images are displayed and that is where I stumbled.
I was just looking for a way to build gallery pages by sorting using drag and drop in the back end and not having to resort to picking or inserting each image into the content editor.. Using the traditional method, If (when) changes need to be made gallery, the entire page content must be edited or shuffled. The "new" method I am trying to implement would simply mean sorting the items in the backend and checking, or uncheching the ShowInGallery checkbox for each item. Makes sense, or am I attempting to do something that is not going to be possible?
Thanks,
Bill
@William we currently already have drag/drop support in the back office for sorting, you just click on the folder node (in media section) and the UI displays on the right and you can move stuff around.
This is a big bug though: http://issues.umbraco.org/issue/U4-1653 and this will be preventing this all from working properly. We'll be releasing a patch release very very soon for it.
Once fixed the library.GetMedia call for xslt will ensure that the media cache is always up to date and the sort order in the xml returned is correct.
This should all be currently possible but you'd have to bump the web.config to clear the cache each time you build a gallery and sort nodes... not ideal. Of course once this patch is out then should all be fine.
Does this answer your question/concern?
Shannon,
I was aware that there is drag and drop sort capability in the back office but as mentioned, was not aware that sorting in the back office exposed that sort order at page load time to macros, etc.
I think that answers my question. I will try and build my gallery page and see what I come up with.
Thanks
Here's a quick Xslt example:
This will list out all child Image items of media item (1050.. which could be a folder) and it is order by the 'sortOrder'. Each list item renders out the node name and it's current sortOrder value.
I haven't written a demo yet in MVC/Razor but is probably nicer (... since i'm not a fan of xslt :P ), however I think there's another issue with Examine and sorting media and in MVC/Razor it uses the Examine cache to get some media data which is much faster. I have to look in to that bug soon too and see if it still exists.
I can not get the GetMedia call to work. I have tried using the code above and numerous other itterations from the forum, regardless of the NodeID I use (explicity taken from the media section, or passed in by a media picker and macro.
I can print the value-of select and return the chosen ID, so that that works, but a value-of from within the for-each loop never prints (again regardless of the method I use.
Thoughts?
So... we are 6.whatever and the back office drag and drop media sort STILL DOES NOT WORK.
Really folks... this is getting old. Even better, the "issue" link posted above does not work becuase we no longer use the issue tracker. Why do we abandonden so much needed content every 2 or so years. Is it too much to ask that the old content be linked or available somehow. I spend more time farting around with the stupid project that it is worth, 90% of that time is spent tracking down documentation for upgrades, bugs and undocumented stuff that should be documented.
Not sure what link you are referring to but the link listed previous to this post is this one: http://issues.umbraco.org/issue/U4-1653 which works just fine. I've also just tested this in 6.0.7 and sorting of media items also works just fine. I've created a screencast demonstrating this: http://screencast.com/t/KTzRD8tUuT
Shannon,
The link is working now, for some reason it was not when I tried the other day.
Thank you for taking the time to post the screencast. I think my comments and frustration have confused my current issue. I have been able to get the sorting to work in the same fashion you showed in the screencast. However, it was my understanding that we would be able to SORT the media items in the right hand panel by dragging their icons around instead of having to sort in the columnar list. Was I mistaken, or is this still a "broken" feature?
There was also issue U4-1027 which I know had a workaround for the 4.x branch, but in latest 6.1.2 this seems to work correctly out of the box for me now? I would recommend if not working for you, see if you can check the Firebug console or the Chrome Inspector to look for any obvious errors?
I am not so sure why this is so hard to communicate:
I have upgraded to 6.1.2
In the backend media section there are TWO areas. The lefthand area where the TREE is and the righthand areas where the PREVIEW is.
What works:
Media sorting works in the TREE when you right click and choose SORT. If the tree or node is refreshed the sorted items retain their position. GetMedia reflects (for the most part) the new sort order.
What DOES NOT WORK:
Dragging to arrange media items in the TREE directly without choosing "sort" from the right click menu
Dragging to arrange media items in the PREVIEW area.
You can drag and drop in either area until your heart is content, but when you refresh the node, the sort order is not saved.
So my statement: It was my understanding that dragging directly in the tree and/or in the preview area was to be a feature!
My question: If the above is true, why is this still broken over a year later and why is it getting no attention?
Drag/drop in the tree has never been a feature of Umbraco, it's not on the road-map (currently) but there is a pending pull request to support this but it requires further review feedback and updates to make sure it works properly and doesn't cause more problems than good.
Drag/drop in the RIGHT hand side does indeed work, I've tested a fresh install of 6.1.2 and in the 6.1.3 branch with the same result.
http://screencast.com/t/qq57uCiY
So, if it is not working for you then we need to figure out why. Captial letters aren't going to help anyone so lets start making gains and figure out how to replicate the issue. Are you getting javascript errors when performing this action?
Thank you for the clarification with regard to the tree functionality.
As for my use of CAPITALS... They were use to ensure clarity, as there has been some confusion with regard to what I have been trying to articulate (likely my fault).
6.1.0 upgraded from 6.0 no JS errors in IE10 or Chrome
Functionality not working in either browser. I can drag the thumbnails around, but the order is not saved when the nodes are reloaded.
@William Try deleting ~/App_Data/Temp/ClientDependency/*.* and then increasing the version in ClientDependency.config by 1 and see if that helps.
If it doesn't, you could check in Fiddler what the results is of the call to /umbraco/webservices/nodeSorter.asmx/UpdateSortOrder is. The response body should be empty.
If you have a lot of media items then sorting then my comment on the issue might help: http://issues.umbraco.org/issue/U4-1027#comment=67-3093
I have just upgraded another site to 6.1.2
~/App_Data/Temp/ClientDependency/*.*
Increased ClientDependency.config by 1
Restarted Services (Azure)
Tested in Both IE10 and Chrome
Still not working.
It may be important to note that my "media" items have some custom fields.
ToolTipText (Text)
ShowInGallery (Ucomponents Toggle)
GalleryText(Tex)
All (3) on the "image" tab. Their purpose is self explanatory. Could this be the issue?
FWIW: issues.umbraco.org appears to be down for the last hour or so
No idea how to use fiddler but I tried: I am seeing the NodeSorter.asmx/UpdateSortOrder returning what appears to be an error in the result list (500)
Server Error in '/' Application.
Request format is unrecognized for URL unexpectedly ending in '/UpdateSortOrder'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/UpdateSortOrder'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18033
Sorry for the issuetracker outage, an upgrade of the software took longer than expected.
Good to see we have a real error now, this solution should work for you: http://issues.umbraco.org/issue/U4-1027#comment=67-3093
We'll update this code (probably for 6.1.4 to use Web API calls instead of webservices, that will prevent other people from running into the same issue).
is working on a reply...