Skip to content

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

@ryanmitchell@jasonvarga@fdeneux
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[4.x] Split global set variables into its own repository and stache store by ryanmitchell · Pull Request #8343 · statamic/cms · GitHub
Skip to content

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

@ryanmitchell@jasonvarga@fdeneux
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [4.x] Split global set variables into its own repository and stache store by ryanmitchell · Pull Request #8343 · statamic/cms · GitHub
Skip to content

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

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

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

@ryanmitchell@jasonvarga@fdeneux
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [4.x] Split global set variables into its own repository and stache store by ryanmitchell · Pull Request #8343 · statamic/cms · GitHub
Skip to content

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

@ryanmitchell@jasonvarga@fdeneux
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [4.x] Split global set variables into its own repository and stache store by ryanmitchell · Pull Request #8343 · statamic/cms · GitHub
Skip to content

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

@ryanmitchell@jasonvarga@fdeneux
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [4.x] Split global set variables into its own repository and stache store by ryanmitchell · Pull Request #8343 · statamic/cms · GitHub
Skip to content

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

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

[4.x] Split global set variables into its own repository and stache store - #8343

Merged
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories
Aug 8, 2023
Merged

[4.x] Split global set variables into its own repository and stache store#8343
jasonvarga merged 25 commits into
statamic:4.xfrom
ryanmitchell:feature/allow-split-globals-variables-respositories

Conversation

@ryanmitchell

@ryanmitchellryanmitchell commented Jun 23, 2023

Copy link
Copy Markdown
Contributor

There seems to be a lot of people who want to split config from data when using eloquent driver, which is already mostly possible apart from forms and globals. Forms will be possible if/when this merges.

See for reference:
statamic/eloquent-driver#172
statamic/eloquent-driver#128
statamic/eloquent-driver#147
statamic/eloquent-driver#168

This PR splits global variables out into its own repository and store but maintains sharing the same directory as globals, so at a file-level nothing changes. All tests are passing locally which is a good sign that I haven't broken anything, and I was trying not to affect the existing structure in any way so made changes around it rather than simply adding a new directory for variables.

Could you let me know if this is something you would consider merging, and if so I'll spend some more time ensure the test coverage is up to scratch.

[Also, sorry. I know my PRs are always time consuming to review]

@jasonvarga

Copy link
Copy Markdown
Member

Also, sorry. I know my PRs are always time consuming to review

The best ones are.

@fdeneux

Copy link
Copy Markdown

Thanks @ryanmitchell , our team is missing this feature. @jasonvarga any idea when your team will be able to review (and consider merging) this PR?

We work with multiple environments so we like to split config from data, with config being version controlled and data environment specific. We've managed to so for all stores except globals, meaning that our team is required to replicate config changes for globals on all environments.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

If its critical to you then composer patch it in.

@jasonvarga

Copy link
Copy Markdown
Member

I'm running into an issue while working on #8505 and I think this PR would help. So I'm working on this now. 👍

Comment threadsrc/Stache/Stores/GlobalVariablesStore.php Outdated
- Globals no longer hold the localizations in a property. They are retrieved on demand from the variables repo.
- The GlobalSet class will save and delete localizations rather than the repo. It'll need to happen regardless of the repo implementation.
- Make the globals repo dumber - the way it was. Let it just get the global sets from the store. Don't worry about the variables.
- Call ->values() in findBySet. Since it filters, the keys could be whack.
Comment threadsrc/Stache/Stores/GlobalVariablesStore.php
@jasonvarga
jasonvarga merged commit 424fc84 into statamic:4.xAug 8, 2023
@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Thank you. Did it end up helping fix the other issue (#8505)?

@ryanmitchell
ryanmitchell deleted the feature/allow-split-globals-variables-respositories branch August 8, 2023 17:59
@jasonvarga

Copy link
Copy Markdown
Member

Yep it did, and it's what I focused most on with this PR.

But right after merging this I realized this PR totally doesn't work when you have a single site and with the variables directory different from the globals. The variables store doesn't find the base file. Kinda had my multi-site blinders on while reviewing this.

I'm thinking that a simple temporary solution is to throw an exception when you're using the stache and have different directories defined for globals and global-variables.

@ryanmitchell

Copy link
Copy Markdown
ContributorAuthor

Yeah that’s a good point. Never thought of trying different directories as the files are merged in that situation.

I think that’s a reasonable solution. Maybe in statamic 5 you always split the files even in single site mode?

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.

3 participants

@ryanmitchell@jasonvarga@fdeneux