MDS Dark theme - version history

Current version: 1.8.3

This file is updated every time the theme package changes, so you can
always tell which zip you're looking at (also shown in style.css's
"Version:" header, and used as the cache-busting query string on the
theme's CSS file). The zip filename itself now also carries the version
(e.g. mds-dark-1.8.1.zip) so you can tell packages apart without
opening them.

------------------------------------------------------------------
1.8.3
------------------------------------------------------------------
- Default page template (page.php -- "Default template" in wp-admin)
  now has an optional top (hero) image: edit the page > "Default Page
  Fields" box > Page Top (Hero) Image. If set, the page opens with the
  same full-width image header + content layout as About Us /
  President's Message. If left empty, nothing changes -- the page keeps
  the old plain text layout (e.g. Privacy Policy).
  Polylang: set it on each language's version of the page separately.
- Default template breadcrumb now also shows the parent page (Home /
  Parent / Page) when the page has a parent, same as the Corporate
  pages.

------------------------------------------------------------------
1.8.2
------------------------------------------------------------------
- Solutions page (template "Solutions", page-uzmanlik.php) now has an
  editable top (hero) image, same as the Corporate pages (About Us,
  President's Message, Vision & Mission). Edit the Solutions page in
  wp-admin > "Solutions Page Fields" box > Page Top (Hero) Image.
  Empty = the theme's default hero-template.jpg, exactly as before.
  Polylang: set it on each language's Solutions page separately.
- Removed the "01 / 02 / 03" module numbers from the shared Standard
  Page layout (inc/tpl-standard-page.php) completely. Since 1.3.4 they
  were only hidden when a page had a single module, so they still
  showed on President's Message (which has 2+ modules filled). Now
  they never show on About Us, President's Message or Vision &
  Mission. Press Room's per-article numbers are untouched.

------------------------------------------------------------------
1.8.1
------------------------------------------------------------------
- Fixed a bug found while answering a question about the CTA block:
  the "Standard Page Fields" ACF group (Hero image, Info Strip,
  Image+Text block, and the Call to Action box) was only wired up to
  show in wp-admin on the original "Standard Page" template. Since
  "President's Message" and "Vision & Mission" are separate template
  files (even though they share the same rendering code), that admin
  box was invisible on those two -- there was no way to customize
  their Hero image or CTA text, they'd silently always show the
  generic fallback content. Now it shows on all three templates.
- The CTA box's phone number no longer falls back to the old
  hardcoded Istanbul-area number when left empty. It now falls back
  to whichever office has "Use as Footer Phone Number" checked
  (same mechanism added in 1.8.0) -- and if none is checked, the CTA
  box just shows the email address with no phone number, instead of
  a wrong number.

------------------------------------------------------------------
1.8.0
------------------------------------------------------------------
- The phone number at the top of the footer (next to the logo) is no
  longer hardcoded. It now comes from whichever Office has the new
  "Use as Footer Phone Number" checkbox ticked (Offices > edit an
  office > Office Information). If none is ticked, or that office's
  Phone field is empty, the footer just shows no number there.
  See MENUS-AND-SYSTEM.md section 4.1 for setup steps.
- ACTION NEEDED: after installing this version, open your Doha,
  Qatar office record, fill in its Phone field if needed, and check
  "Use as Footer Phone Number" -- otherwise the footer's phone number
  will disappear (it no longer falls back to the old hardcoded
  Istanbul-area number).

------------------------------------------------------------------
1.7.1
------------------------------------------------------------------
- Fax field on the Contact page's office cards no longer shows a
  "Fax:" text label -- the printer icon in front of it is enough,
  same as Phone (just icon + number, no text label). Removed the
  now-unused "Fax" registered string from the Polylang string list
  and the translation CSV.

------------------------------------------------------------------
1.7.0
------------------------------------------------------------------
- Added a Fax field to Office records (Offices > edit an office >
  Office Information > Fax) -- shows on the Contact page's office
  cards with a printer icon and a "Fax:" label (so it's not mistaken
  for a second phone number), right after Phone. Leave it empty and
  nothing extra shows, same as Address/Phone/Email.
- Also translated the two Office Information field labels that were
  still in Turkish ("Telefon" -> "Phone", "E-posta" -> "Email") to
  match every other admin-facing label in the theme.

------------------------------------------------------------------
1.6.2
------------------------------------------------------------------
- Company headquarters moved from Istanbul to Ankara -- updated every
  code-side reference: the footer's "Offices" fallback text, the
  "Headquarters" Info Strip default value on the Standard Page
  template (Corporate Information module), and the bulk translation
  CSV (inc/tools/). NOTE: if a real "Istanbul (HQ)" Office record
  already exists in wp-admin (Offices post type), that's real content
  and needs to be edited there too -- this only fixes the theme's own
  code-level fallback/default text, not existing database content.

------------------------------------------------------------------
1.6.1
------------------------------------------------------------------
- Footer copyright line now reads "Modern Defense Solutions" instead
  of the old "MDS Defense Technologies and Construction" -- the new
  About Us and President's Message content both settled on "Modern
  Defense Solutions (MDS)" as the company name, so the footer now
  matches instead of showing the old construction-focused name.

------------------------------------------------------------------
1.6.0
------------------------------------------------------------------
- The footer's three dynamic columns (Corporate, Solutions, Offices)
  are now fully parametric, the same way the top navigation already
  was: three new menu locations under Appearance > Menus > Manage
  Locations -- "Footer - Corporate column", "Footer - Solutions
  column", "Footer - Offices column". Assign a real menu to any of
  them and you get full manual control (add/remove/reorder/rename/
  link anywhere); leave it unassigned and the existing automatic
  behavior (About Us/President's Message/Vision & Mission/Press Room
  links, or the first N Solutions/Offices records) keeps working
  exactly as before. Nothing breaks if you don't touch this.
- Bundled two one-off WP-CLI admin tools directly inside the theme
  package this time (inc/tools/) instead of sending them separately,
  so they always travel with the zip you actually deploy:
  * inc/tools/polylang-string-translations-tr-ar.csv -- editable
    English/Turkish/Arabic translation spreadsheet for every string
    registered by the theme.
  * inc/tools/import-polylang-strings.php -- run once with `wp
    eval-file` to bulk-load that CSV's Turkish/Arabic columns into
    Polylang's String Translations, instead of typing 50+ entries by
    hand in wp-admin. Safe to re-run after editing the CSV.
- Added MENUS-AND-SYSTEM.md -- a single reference document covering
  every menu location and its fallback behavior, the page-template
  system, the CPT ordering rules, the multi-language string-
  translation system, and RTL support. Not a changelog (this file
  still is) -- a living "how does X work" reference.

------------------------------------------------------------------
1.5.0
------------------------------------------------------------------
- Footer "Corporate" links are now genuinely multi-language:
  * "About Us" used to find its target page by guessing a slug
    ("hakkimizda", "about-us", "about") -- which broke as soon as a
    language had a different slug (e.g. the Arabic page's real slug is
    "about-us-ar"). It now finds the page under ANY of those slugs, in
    ANY language, then hands off to Polylang to resolve the correct
    translation for whichever language you're currently viewing.
  * "Press Room" now links to the real Press Room page instead of a
    dead "#".
  * Added two new selectable Page templates -- "President's Message"
    and "Vision & Mission" (Page Attributes > Template, same place as
    "Standard Page"). Once you create a Page with one of these
    templates (in each language, via Polylang's "+" translate button,
    exactly like About Us), the matching footer link finds it
    automatically and correctly per language -- no slug guessing
    involved, same proven method already used for Projects, Solutions,
    Contact and Press Room.
  * Pages using these two new templates are deliberately left OUT of
    the automatic top-menu list (mds_fallback_menu()) -- they're meant
    to live in the footer only, not clutter the main navigation. This
    only matters if you're relying on that automatic menu (no menu set
    up yet under Appearance > Menus); if you do set up a real menu
    there, you simply choose what's in it either way.
  * Fixed a small pre-existing display bug on the same line: "Vision &
    Mission" was showing as "Vision &amp; Mission" (double-encoded).
  * "Standard Page", "President's Message" and "Vision & Mission" now
    share ONE underlying layout file (inc/tpl-standard-page.php) so a
    future design tweak only needs to happen in one place.

------------------------------------------------------------------
1.4.0
------------------------------------------------------------------
- Fixed a real bug: Arabic pages (e.g. /ar/about-us-ar/) rendered with
  NO styling at all -- completely unstyled, elements stacked with no
  layout, colors or spacing. Cause: the theme was telling WordPress to
  swap in a "style-rtl.css" file whenever a right-to-left language was
  active (wp_style_add_data(...'rtl'=>'replace')), but that file was
  never created -- so on every Arabic page WordPress tried to load a
  stylesheet that doesn't exist, and the entire theme CSS silently
  failed to load. Removed that broken swap.
- Added real RTL (right-to-left) support instead, as a single set of
  "[dir=\"rtl\"]" override rules at the bottom of style.css -- not a
  separate mirrored file. Most of the theme's two-column layouts
  (About, Image+Text, Project/Solution detail, footer columns) already
  auto-mirror correctly under RTL because they're built with CSS
  grid/flexbox, which the browser flips automatically. The override
  block only touches the handful of rules that were hardcoded to a
  physical left/right and needed an explicit flip: the header language
  switcher's spacing, the capability-strip dividers, the homepage hero's
  darkening gradient, the About section's decorative corner accent, the
  accent-bar/quote-style left borders used in several places, and list
  bullet indentation.
- The little "->" arrow at the end of "Read Article" / "View Project" /
  "Details" links now points the correct direction automatically: left
  ("<-") on right-to-left pages, right ("->") everywhere else.
- Standard Page template: the "01/02/03" module numbers now only show
  up when a page actually has 2 or more of its modules (Text Block,
  Info Strip, Image+Text) filled in at once -- i.e. only when there is
  a real sequence to count. A page with just one of those filled in
  (like About Us right now, with only the Text Block populated) no
  longer shows a lone, meaningless "01". Press Room is untouched --
  it already only shows a number per real article in the list.

------------------------------------------------------------------
1.3.4
------------------------------------------------------------------
- Standard Page template: the "01/02/03" module numbers now only show
  up when a page actually has 2 or more of its modules (Text Block,
  Info Strip, Image+Text) filled in at once -- i.e. only when there is
  a real sequence to count. A page with just one of those filled in
  (like About Us right now, with only the Text Block populated) no
  longer shows a lone, meaningless "01". Press Room is untouched --
  it already only shows a number per real article in the list.

------------------------------------------------------------------
1.3.3
------------------------------------------------------------------
- Removed the decorative "01" module number from the single Project
  page and single Solution page. On those pages it was hardcoded and
  never actually counted anything (there's only ever one module on
  each), so it was pure leftover -- unlike the Standard Page template
  and the Press Room list, where the same number can reflect a real
  stack of multiple modules or list items. Layout adjusts to a single
  column now that the number's reserved space is gone.
- Delivered theme zip files are now named with the version in the
  filename (mds-dark-<version>.zip) instead of a fixed mds-dark-theme.zip
  name, so two versions received separately don't overwrite each other
  and you can tell at a glance which one you're looking at.

------------------------------------------------------------------
1.3.2
------------------------------------------------------------------
- Standard Page template: removed the generic "Text Block" label that
  was displaying above the page's main content. It made sense as a
  placeholder when this section only ever held a short paragraph, but
  it read as an internal/leftover label once real content with its
  own heading (e.g. "Who We Are") was added -- now the content just
  starts directly under the module number, with no redundant label
  above it.

------------------------------------------------------------------
1.3.1
------------------------------------------------------------------
- Removed the "Picture Block" / "Project Pictures" custom ACF field(s)
  added in 1.3.0 -- turned out to be unnecessary. Each Project already
  shows its own individual picture via the built-in Featured Image
  field (used for both the Projects grid thumbnail and that project's
  own page); there is no separate picture field to fill in anymore.
- This is a data issue, not a code issue, but worth noting: on staging,
  every project currently falls back to the same placeholder image
  (hero-template.jpg) because neither of the two real Project posts has
  a Featured Image set yet. See set-proje-featured-images.sh (delivered
  separately) to set each project's own picture from the render images
  already sourced for this site.

------------------------------------------------------------------
1.3.0
------------------------------------------------------------------
- Projects page: shortened the "no projects yet" empty-state message --
  it no longer tells you where to add one, just says none exist yet.
- Added a "Picture Block" to Project records (Projects > edit a project):
  a separate custom picture (with an optional caption) you can add to
  that project's own page, independent of the Featured Image (which is
  only used for the thumbnail in the Projects grid). Leave it empty and
  nothing extra is shown.

------------------------------------------------------------------
1.2.0
------------------------------------------------------------------
- Every remaining Turkish admin-facing string translated to English:
  "Template Name:" headers (the Page Attributes > Template dropdown),
  all ACF field group titles / field labels / instructions boxes.
- CPT URL slugs switched from Turkish to English: /projeler/ ->
  /projects/, /cozumler/ -> /solutions/, /basin/ -> /press/.
- Fixed a related bug: several internal links (breadcrumbs, CTA
  buttons) guessed a page's URL from a hardcoded Turkish slug
  (home_url('/projeler/'), etc.). Replaced with a proper
  template-based lookup (mds_page_url_by_template()) so links stay
  correct no matter what slug you actually give each page.
- Language-switcher fallback markup (used only when Polylang can't
  supply the real language list) now shows EN as the active/default
  language instead of TR.
- All four content types (Projects, Offices, Solutions, Press) now
  support manual ordering (Page Attributes > Order / "page-attributes"
  support) -- drag a number to control display order in every grid.
  Press keeps defaulting to newest-first unless you set an order.

------------------------------------------------------------------
1.1.0
------------------------------------------------------------------
- Footer copyright now shows "2026" while the current year is 2026,
  and automatically becomes "2026-XXXX" once the year passes 2026
  (computed from date('Y'), never hardcoded).
- Added a real Contact Form (Full Name / Email / Phone / Message) to
  the Contact page, self-contained (no external plugin), with nonce +
  honeypot spam protection.
- Main navigation is now fully dynamic: it lists every published Page
  automatically (ordered by Page Attributes > Order), instead of a
  fixed slug list -- a new Page appears in the menu with no code
  change needed.
- Site default language switched to English (Turkish and Arabic are
  Polylang secondary languages). All theme chrome text (buttons,
  breadcrumbs, kicker labels, empty-state messages, form labels,
  footer headings) is now English source text, registered with
  Polylang (mds_t() / mds_te() helpers) so translations can be typed
  into Languages > String translations without touching code.
- CPT admin labels (Projects/Offices/Solutions/Press Room) translated
  to English. ACF default field content translated to English.
- Removed the language switcher from the footer (kept in the header
  only -- it didn't align with the rest of the footer content).
- Solutions ("Cozumler") list expanded from the original 4 categories
  to 6: Training & Simulation, Military Facilities, Consultancy
  Services, Physical & Facility Security, Data Centers &
  Communications, Cyber Security. Footer's Solutions column now
  queries up to 6 records instead of 4.
- Added seed-cozumler.sh (WP-CLI script, delivered separately from the
  theme zip) to create the 6 Solutions records with real placeholder
  title/summary/content in one run.

------------------------------------------------------------------
1.0.0
------------------------------------------------------------------
- Initial "MDS Dark" theme: Anasayfa (Hero-only front page), Hakkimizda
  / generic "Sayfa Sablonu" page template, Projeler (mds_proje CPT +
  grid + single), Ofisler (mds_ofis CPT, feeds the Contact page grid
  and footer column), Cozumler / Uzmanlik (mds_cozum CPT + grid +
  single), Basin Odasi (mds_basin CPT + list). ACF (free) field groups
  for all editable content, Polylang-ready language switcher.
