[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[5.x] Allow asset container order to be specified - #10177

Closed
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered
Closed

[5.x] Allow asset container order to be specified#10177
ryanmitchell wants to merge 8 commits into
statamic:5.xfrom
ryanmitchell:feature/allow-asset-containers-to-be-ordered

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented May 23, 2024

Copy link
Copy Markdown
Contributor

Since #4947 asset containers have been ordered by title, which is mostly a good thing.

However sometimes, you have an asset container that is low priority and rarely used, but then appears first, which isnt so good. A small quality of life improvement is to let the order by specified, while still falling back to title when its not.

This PR introduces an order key to the yaml, which the CP then sorts by when outputting the list, eg order: 99

Before:

CleanShot 2024-05-23 at 13 59 23@2x

After:

CleanShot 2024-05-23 at 13 58 55@2x

@robdekort

Copy link
Copy Markdown
Contributor

This works like a charm. Love it.

@duncanmccleanduncanmcclean left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I've made a couple of tweaks:

  • Moved the fallback order out of the $order property into the order() method, so the property contains the "file" value.
  • When the $order property is set, it'll now include it in the fileData array so it'll get saved to the asset container's YAML file.
  • Removed the default value from being set in the AssetContainersStore so the $order property is null unless it's been explicitly set in the asset container file, to prevent order: 1 being saved to every asset container.

@jasonvarga

Copy link
Copy Markdown
Member

Feels like a slippery slope. If asset containers can have custom orders, why not collections, taxonomies, globals, navs, forms, etc.

Does using the nav builder to reorder your containers not work for you? You can already move the more important asset container to the top. Collections, taxonomies, etc all of them too.

I assume once this is merged you will be doing an "Add order to everything else" PR? 😅

Also if you're going to apply this order to the nav and asset browser tabs, you may as well move it up a level and make the sort happen on AssetContainer::all().

Finally, there's no way to apply the order other than adding it to the yaml. You probably will want a field in the CP settings.

Just brain dumping here and looking for feedback, don't just do it. 😃

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

I think the issue with the nav builder in this case is yes you can change the sidebar order, but it doesn't change the tab order in assets, which this allows. I have no plans for another PR (honest!). Happy for you to close if you dont feel its of benefit... I mostly did this cause @robdekort wanted it.

@robdekort

robdekort commented May 28, 2024

Copy link
Copy Markdown
Contributor

Yeah, the issue is that the assets directly open up. In the case of my sites you always go to the Favicons container because it happens to be the first in the alphabet. This like only makes sense once during development:
Screenshot 2024-05-28 at 19 04 29

With collection you open up in the overview table so there's no issue there. Fwiw, I have no other order requests, lol :-)

@robdekort

Copy link
Copy Markdown
Contributor

Just a thought. Perhaps it would make more sense if the CP nav order would be respected by the tabs?

@edalzell

edalzell commented May 28, 2024

Copy link
Copy Markdown
Contributor

Ya we'd love this too, cuz we have a Private asset container by default in our site builder, but it's rarely used, so we'd like it at the end of the tabs.

We have no issues with any of the other data because they don't really have "tabs" the same way Asset Containers do.

@ebeauchamps

Copy link
Copy Markdown
Contributor

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

@duncanmcclean

Copy link
Copy Markdown
Member

I am managing a site with tons of assets. I am uploading multiple assets, and only then I am calling some of them when I am creating my content. I need a way to choose the column on which the asset container will be sorted (most often, it's the Date column, descending order). I was indeed surprise that collections only can be sorted with a default order. Will this PR allow the user to choose the column and the sort order, by default? It's critical in my use case. Thanks.

No, this pull request only allows you to re-order the asset container tabs shown in this screenshot.

CleanShot 2024-05-30 at 15 41 19

@ebeauchamps

Copy link
Copy Markdown
Contributor

Thanks Jason. I'll take a look into "Ideas" then.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

@jasonvarga I've moved the sort to :all() and added a CP field

@morhi

morhi commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

@robdekort

Copy link
Copy Markdown
Contributor

As a workaround for this I just prefixed the container title with 1 - and 2 - :)

Been there, but it just killed me whenever I saw those digits in the CP 🤣

@jasonvarga

Copy link
Copy Markdown
Member

Set your container titles to title: '<span class="hidden">1</span>Name'

jk definitely don't do that.

@duncanmcclean

Copy link
Copy Markdown
Member

Thanks for this pull request!

However, we've decided to remove the tabs from the Asset Manager, in favour of the links in the Control Panel nav. This means you'll be able to re-order & hide asset containers using the Nav Customizer, which saves us adding a new setting.

Closing in favour of #10392.

@robdekort

Copy link
Copy Markdown
Contributor

Cool! I like it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@ryanmitchell@robdekort@jasonvarga@edalzell@ebeauchamps@duncanmcclean@morhi