Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4cbae27a10 | ||
|
|
06cd7097d1 |
18
.htaccess
@ -2,17 +2,11 @@ DirectoryIndex index.php index.html
|
||||
Options -Indexes
|
||||
Options -MultiViews
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
|
||||
# 0) Serve existing files/directories as-is
|
||||
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^ - [L]
|
||||
|
||||
# 1) Internal map: /page or /page/ -> /page.php (if such PHP file exists)
|
||||
RewriteCond %{REQUEST_FILENAME}.php -f
|
||||
RewriteRule ^(.+?)/?$ $1.php [L]
|
||||
|
||||
# 2) Optional: strip trailing slash for non-directories (keeps .php links working)
|
||||
RewriteBase /
|
||||
RewriteRule ^index\.php$ - [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.+)/$ $1 [R=301,L]
|
||||
RewriteRule . /index.php [L]
|
||||
</IfModule>
|
||||
|
||||
4
admin_credentials.txt
Normal file
@ -0,0 +1,4 @@
|
||||
WordPress Admin Credentials:
|
||||
URL: http://localhost/wp-admin
|
||||
Username: admin
|
||||
Password: p3NXTFnfcpV3kgnh
|
||||
BIN
assets/vm-shot-2026-01-26T11-35-05-786Z.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
assets/vm-shot-2026-01-26T11-35-21-768Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
assets/vm-shot-2026-01-26T11-35-30-801Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
assets/vm-shot-2026-01-26T11-39-15-260Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
assets/vm-shot-2026-01-26T11-54-24-787Z.jpg
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
assets/vm-shot-2026-01-26T11-54-38-389Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
assets/vm-shot-2026-01-26T11-56-16-929Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
assets/vm-shot-2026-01-26T13-33-13-586Z.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
assets/vm-shot-2026-01-26T13-41-42-697Z.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
assets/vm-shot-2026-01-26T13-43-33-368Z.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/vm-shot-2026-01-26T14-46-07-412Z.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
assets/vm-shot-2026-01-26T14-58-14-516Z.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
assets/vm-shot-2026-01-26T14-58-25-621Z.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
assets/vm-shot-2026-01-26T14-58-42-937Z.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
assets/vm-shot-2026-01-26T15-04-37-249Z.jpg
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
assets/vm-shot-2026-01-26T15-04-49-828Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
assets/vm-shot-2026-01-26T15-20-42-350Z.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
assets/vm-shot-2026-01-26T15-20-58-875Z.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/vm-shot-2026-01-26T15-21-19-157Z.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
assets/vm-shot-2026-01-26T15-21-45-883Z.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
assets/vm-shot-2026-01-27T08-23-41-822Z.jpg
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
assets/vm-shot-2026-01-27T08-23-57-939Z.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
assets/vm-shot-2026-01-27T08-24-19-323Z.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
assets/vm-shot-2026-01-27T08-24-32-288Z.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Flatlogic URL Preserver
|
||||
* Description: Automatically attaches fl_project to all links on the page.
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
// Function to fetch the ID once per request
|
||||
function fl_get_env_project_id() {
|
||||
static $cached_id = null;
|
||||
if ($cached_id !== null) return $cached_id;
|
||||
|
||||
$cached_id = getenv('PROJECT_ID');
|
||||
|
||||
if (!$cached_id) {
|
||||
$envPath = ABSPATH . '../.env';
|
||||
if (file_exists($envPath)) {
|
||||
$lines = file($envPath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
foreach ($lines as $line) {
|
||||
if (strpos(trim($line), 'PROJECT_ID=') === 0) {
|
||||
$cached_id = trim(str_replace('PROJECT_ID=', '', $line), "\"' ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $cached_id;
|
||||
}
|
||||
|
||||
// The core function to modify the URL
|
||||
function fl_append_project_param( $url ) {
|
||||
$pid = fl_get_env_project_id();
|
||||
if ( ! $pid || empty( $url ) || strpos( $url, '#' ) === 0 ) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
// Only append if it's an internal link
|
||||
if ( strpos( $url, home_url() ) === 0 || ( strpos( $url, '/' ) === 0 && strpos( $url, '//' ) !== 0 ) ) {
|
||||
return add_query_arg( 'fl_project', $pid, $url );
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
// Apply to all link filters
|
||||
$filters = [
|
||||
'post_link', 'page_link', 'post_type_link',
|
||||
'term_link', 'attachment_link',
|
||||
'author_link', 'category_link', 'tag_link'
|
||||
];
|
||||
|
||||
foreach ( $filters as $f ) {
|
||||
add_filter( $f, 'fl_append_project_param' );
|
||||
}
|
||||
|
||||
// Special case: Navigation Menus
|
||||
add_filter( 'nav_menu_link_attributes', function( $atts ) {
|
||||
if ( isset( $atts['href'] ) ) {
|
||||
$atts['href'] = fl_append_project_param( $atts['href'] );
|
||||
}
|
||||
return $atts;
|
||||
}, 10, 1 );
|
||||
@ -7,39 +7,56 @@
|
||||
"defaultDuotone": false,
|
||||
"defaultGradients": false,
|
||||
"defaultPalette": false,
|
||||
"gradients": [
|
||||
{
|
||||
"name": "Warm Canvas",
|
||||
"slug": "warm-canvas",
|
||||
"gradient": "linear-gradient(135deg, #F7F3EE 0%, #F3EEE6 45%, #FAF6F0 100%)"
|
||||
},
|
||||
{
|
||||
"name": "Sunset Wash",
|
||||
"slug": "sunset-wash",
|
||||
"gradient": "linear-gradient(135deg, #FFF1E5 0%, #FAD9C2 40%, #F7F3EE 100%)"
|
||||
},
|
||||
{
|
||||
"name": "Harbor Mist",
|
||||
"slug": "harbor-mist",
|
||||
"gradient": "linear-gradient(135deg, #E8F0F4 0%, #DDE8EF 45%, #F7F3EE 100%)"
|
||||
}
|
||||
],
|
||||
"palette": [
|
||||
{
|
||||
"color": "#FFFFFF",
|
||||
"color": "#F7F3EE",
|
||||
"name": "Base",
|
||||
"slug": "base"
|
||||
},
|
||||
{
|
||||
"color": "#111111",
|
||||
"color": "#1D1B16",
|
||||
"name": "Contrast",
|
||||
"slug": "contrast"
|
||||
},
|
||||
{
|
||||
"color": "#FFEE58",
|
||||
"color": "#D97757",
|
||||
"name": "Accent 1",
|
||||
"slug": "accent-1"
|
||||
},
|
||||
{
|
||||
"color": "#F6CFF4",
|
||||
"color": "#3A6EA5",
|
||||
"name": "Accent 2",
|
||||
"slug": "accent-2"
|
||||
},
|
||||
{
|
||||
"color": "#503AA8",
|
||||
"color": "#2F855A",
|
||||
"name": "Accent 3",
|
||||
"slug": "accent-3"
|
||||
},
|
||||
{
|
||||
"color": "#686868",
|
||||
"color": "#8A8F98",
|
||||
"name": "Accent 4",
|
||||
"slug": "accent-4"
|
||||
},
|
||||
{
|
||||
"color": "#FBFAF3",
|
||||
"color": "#FFF7EA",
|
||||
"name": "Accent 5",
|
||||
"slug": "accent-5"
|
||||
},
|
||||
@ -51,8 +68,22 @@
|
||||
]
|
||||
},
|
||||
"layout": {
|
||||
"contentSize": "645px",
|
||||
"wideSize": "1340px"
|
||||
"contentSize": "700px",
|
||||
"wideSize": "1400px"
|
||||
},
|
||||
"shadow": {
|
||||
"presets": [
|
||||
{
|
||||
"name": "Soft",
|
||||
"slug": "soft",
|
||||
"shadow": "0 12px 30px rgba(29, 27, 22, 0.12)"
|
||||
},
|
||||
{
|
||||
"name": "Lifted",
|
||||
"slug": "lifted",
|
||||
"shadow": "0 18px 40px rgba(29, 27, 22, 0.18)"
|
||||
}
|
||||
]
|
||||
},
|
||||
"spacing": {
|
||||
"defaultSpacingSizes": false,
|
||||
@ -151,6 +182,52 @@
|
||||
}
|
||||
],
|
||||
"fontFamilies": [
|
||||
{
|
||||
"name": "Fira Sans",
|
||||
"slug": "fira-sans",
|
||||
"fontFamily": "\"Fira Sans\", sans-serif",
|
||||
"fontFace": [
|
||||
{
|
||||
"src": [
|
||||
"file:./assets/fonts/fira-sans/FiraSans-Regular.woff2"
|
||||
],
|
||||
"fontWeight": "400",
|
||||
"fontStyle": "normal",
|
||||
"fontFamily": "\"Fira Sans\""
|
||||
},
|
||||
{
|
||||
"src": [
|
||||
"file:./assets/fonts/fira-sans/FiraSans-SemiBold.woff2"
|
||||
],
|
||||
"fontWeight": "600",
|
||||
"fontStyle": "normal",
|
||||
"fontFamily": "\"Fira Sans\""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Literata",
|
||||
"slug": "literata",
|
||||
"fontFamily": "\"Literata\", serif",
|
||||
"fontFace": [
|
||||
{
|
||||
"src": [
|
||||
"file:./assets/fonts/literata/Literata72pt-Regular.woff2"
|
||||
],
|
||||
"fontWeight": "400",
|
||||
"fontStyle": "normal",
|
||||
"fontFamily": "\"Literata\""
|
||||
},
|
||||
{
|
||||
"src": [
|
||||
"file:./assets/fonts/literata/Literata72pt-SemiBold.woff2"
|
||||
],
|
||||
"fontWeight": "600",
|
||||
"fontStyle": "normal",
|
||||
"fontFamily": "\"Literata\""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Manrope",
|
||||
"slug": "manrope",
|
||||
@ -187,22 +264,22 @@
|
||||
},
|
||||
"styles": {
|
||||
"color": {
|
||||
"background": "var:preset|color|base",
|
||||
"background": "var:preset|gradient|warm-canvas",
|
||||
"text": "var:preset|color|contrast"
|
||||
},
|
||||
"spacing": {
|
||||
"blockGap": "1.2rem",
|
||||
"blockGap": "1.4rem",
|
||||
"padding": {
|
||||
"left": "var:preset|spacing|50",
|
||||
"right": "var:preset|spacing|50"
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontFamily": "var:preset|font-family|manrope",
|
||||
"fontFamily": "var:preset|font-family|fira-sans",
|
||||
"fontSize": "var:preset|font-size|large",
|
||||
"fontWeight": "300",
|
||||
"letterSpacing": "-0.1px",
|
||||
"lineHeight": "1.4"
|
||||
"fontWeight": "400",
|
||||
"letterSpacing": "-0.15px",
|
||||
"lineHeight": "1.55"
|
||||
},
|
||||
"blocks": {
|
||||
"core/avatar": {
|
||||
@ -211,13 +288,17 @@
|
||||
}
|
||||
},
|
||||
"core/button": {
|
||||
"border": {
|
||||
"radius": "999px"
|
||||
},
|
||||
"shadow": "var:preset|shadow|soft",
|
||||
"variations": {
|
||||
"outline": {
|
||||
"border": {
|
||||
"color": "currentColor",
|
||||
"width": "1px"
|
||||
},
|
||||
"css": ".wp-block-button__link:not(.has-background):hover {background-color:color-mix(in srgb, var(--wp--preset--color--contrast) 5%, transparent);}",
|
||||
"css": ".wp-block-button__link:not(.has-background):hover {background-color:color-mix(in srgb, var(--wp--preset--color--contrast) 8%, transparent);}",
|
||||
"spacing": {
|
||||
"padding": {
|
||||
"bottom": "calc(1rem - 1px)",
|
||||
@ -445,7 +526,8 @@
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|large",
|
||||
"fontWeight": "300"
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "1.5"
|
||||
},
|
||||
"elements": {
|
||||
"cite": {
|
||||
@ -480,8 +562,8 @@
|
||||
"core/pullquote": {
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|xx-large",
|
||||
"fontWeight": "300",
|
||||
"lineHeight": "1.2"
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "1.15"
|
||||
},
|
||||
"elements": {
|
||||
"cite": {
|
||||
@ -506,7 +588,7 @@
|
||||
}
|
||||
},
|
||||
"core/search": {
|
||||
"css": "& .wp-block-search__input{border-radius:3.125rem;padding-left:1.5625rem;padding-right:1.5625rem;border-color:var(--wp--preset--color--accent-6);}",
|
||||
"css": "& .wp-block-search__input{border-radius:3.125rem;padding-left:1.5625rem;padding-right:1.5625rem;border-color:var(--wp--preset--color--accent-6);box-shadow:0 8px 20px rgba(29, 27, 22, 0.08);} & .wp-block-search__input:focus{border-color:var(--wp--preset--color--accent-2);}",
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|medium",
|
||||
"lineHeight": "1.6"
|
||||
@ -596,7 +678,7 @@
|
||||
"elements": {
|
||||
"button": {
|
||||
"color": {
|
||||
"background": "var:preset|color|contrast",
|
||||
"background": "var:preset|color|accent-2",
|
||||
"text": "var:preset|color|base"
|
||||
},
|
||||
":focus": {
|
||||
@ -607,7 +689,7 @@
|
||||
},
|
||||
":hover": {
|
||||
"color": {
|
||||
"background": "color-mix(in srgb, var(--wp--preset--color--contrast) 85%, transparent)",
|
||||
"background": "color-mix(in srgb, var(--wp--preset--color--accent-2) 85%, #000000)",
|
||||
"text": "var:preset|color|base"
|
||||
},
|
||||
"border": {
|
||||
@ -623,7 +705,9 @@
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|medium"
|
||||
"fontSize": "var:preset|font-size|medium",
|
||||
"fontWeight": "600",
|
||||
"letterSpacing": "0.2px"
|
||||
}
|
||||
},
|
||||
"caption": {
|
||||
@ -634,22 +718,26 @@
|
||||
},
|
||||
"h1": {
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|xx-large"
|
||||
"fontSize": "var:preset|font-size|xx-large",
|
||||
"fontFamily": "var:preset|font-family|literata"
|
||||
}
|
||||
},
|
||||
"h2": {
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|x-large"
|
||||
"fontSize": "var:preset|font-size|x-large",
|
||||
"fontFamily": "var:preset|font-family|literata"
|
||||
}
|
||||
},
|
||||
"h3": {
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|large"
|
||||
"fontSize": "var:preset|font-size|large",
|
||||
"fontFamily": "var:preset|font-family|literata"
|
||||
}
|
||||
},
|
||||
"h4": {
|
||||
"typography": {
|
||||
"fontSize": "var:preset|font-size|medium"
|
||||
"fontSize": "var:preset|font-size|medium",
|
||||
"fontFamily": "var:preset|font-family|literata"
|
||||
}
|
||||
},
|
||||
"h5": {
|
||||
@ -668,18 +756,19 @@
|
||||
},
|
||||
"heading": {
|
||||
"typography": {
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "1.125",
|
||||
"letterSpacing": "-0.1px"
|
||||
"fontFamily": "var:preset|font-family|literata",
|
||||
"fontWeight": "500",
|
||||
"lineHeight": "1.18",
|
||||
"letterSpacing": "-0.2px"
|
||||
}
|
||||
},
|
||||
"link": {
|
||||
"color": {
|
||||
"text": "currentColor"
|
||||
"text": "var:preset|color|accent-2"
|
||||
},
|
||||
":hover": {
|
||||
"typography": {
|
||||
"textDecoration": "none"
|
||||
"textDecoration": "underline"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 20 KiB |
BIN
wp-content/uploads/2026/02/vm-shot-2026-01-26T11-35-05-786Z.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 28 KiB |
BIN
wp-content/uploads/2026/02/vm-shot-2026-01-26T11-35-21-768Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 28 KiB |
BIN
wp-content/uploads/2026/02/vm-shot-2026-01-26T11-35-30-801Z.jpg
Normal file
|
After Width: | Height: | Size: 103 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 35 KiB |
BIN
wp-content/uploads/2026/02/vm-shot-2026-01-26T14-58-14-516Z.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 14 KiB |
BIN
wp-content/uploads/2026/02/vm-shot-2026-01-27T08-24-19-323Z.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |