feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run

- Base: wintercms/winter branch 1.2 (full framework)
- Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS
- Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication
- Partials: hero (offline-first), features, modes (offline/nube toggle),
  screenshots, pricing (3 planes), comparison, FAQ, CTA
- Plugin VivesPOS.Site with ContactForm
- Dockerfile: PHP 8.2 Apache, port 80, healthcheck
- Added winter/wn-pages, blog, sitemap, seo plugins
- Active theme set to vivespos
This commit is contained in:
2026-08-21 19:29:00 -06:00
commit 1f72193a64
3266 changed files with 531480 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Client-side Language Lines
|--------------------------------------------------------------------------
|
| These are messages made available to the client browser via JavaScript.
| To compile this file run: php artisan winter:util compile lang
|
*/
'markdowneditor' => [
'formatting' => 'Formatering',
'quote' => 'Citat',
'code' => 'Kod',
'header1' => 'Rubrik 1',
'header2' => 'Rubrik 2',
'header3' => 'Rubrik 3',
'header4' => 'Rubrik 4',
'header5' => 'Rubrik 5',
'header6' => 'Rubrik 6',
'bold' => 'Fet',
'italic' => 'Kursiv',
'unorderedlist' => 'Oordnad lista',
'orderedlist' => 'Ordnad lista',
'video' => 'Video',
'image' => 'Bild',
'link' => 'Länk',
'horizontalrule' => 'Infoga horisontiell linje',
'fullscreen' => 'Fullskärm',
'preview' => 'Förhandsgranska',
],
'mediamanager' => [
'insert_link' => "Infoga medialänk",
'insert_image' => "Infoga bild",
'insert_video' => "Infoga video",
'insert_audio' => "Infoga ljud",
'invalid_file_empty_insert' => "Vänligen välj en fil att infoga till länken.",
'invalid_file_single_insert' => "Vänligen välj en enskild fil.",
'invalid_image_empty_insert' => "Vänligen välj bild(er) att infoga.",
'invalid_video_empty_insert' => "Vänligen välj en video att infoga.",
'invalid_audio_empty_insert' => "Vänligen välj en ljudfil att infoga.",
],
'alert' => [
'confirm_button_text' => 'OK',
'cancel_button_text' => 'Avbryt',
],
];

View File

@@ -0,0 +1,294 @@
<?php
return [
'app' => [
'name' => 'Winter CMS',
'tagline' => 'Getting back to basics',
],
'directory' => [
'create_fail' => "Kunde inte skapa mapp: :name",
],
'file' => [
'create_fail' => "Kunde inte skapa fil: :name",
],
'page' => [
'invalid_token' => [
'label' => 'Ogiltig säkerhetstoken',
],
],
'combiner' => [
'not_found' => "Kombinationsfilen ':name' kunde ej hittas",
],
'system' => [
'name' => 'System',
'menu_label' => 'System',
'categories' => [
'cms' => 'CMS',
'misc' => 'Övrigt',
'logs' => 'Loggar',
'mail' => 'Mail',
'shop' => 'Affär',
'team' => 'Lag',
'users' => 'Användare',
'system' => 'System',
'social' => 'Social',
'events' => 'Händelser',
'customers' => 'Kunder',
'my_settings' => 'Mina inställningar'
]
],
'theme' => [
'label' => 'Tema',
'unnamed' => 'Namnlöst tema',
'name' => [
'label' => 'Temanamn',
'help' => 'Namnge temat med en unik kod. Till exempel, Winter.Vanilla'
],
],
'themes' => [
'install' => 'Installerar teman',
'search' => 'sök efter teman att installera...',
'installed' => 'Installerade teman',
'no_themes' => 'Det finns inga teman installerade från marknadsplatsen.',
'recommended' => 'Rekommenderat',
'remove_confirm' => 'Är du säker på att du vill radera det här temat?'
],
'plugin' => [
'label' => 'Tillägg',
'unnamed' => 'Namnlöst tillägg',
'name' => [
'label' => 'Tilläggsnamn',
'help' => 'Namnge tillägget efter dess unika kod. Exempelvis Winter.Blog',
]
],
'plugins' => [
'manage' => 'Hantera tillägg',
'enable_or_disable' => 'Aktivera eller inaktivera',
'enable_or_disable_title' => 'Aktivera eller inaktivera tillägg',
'install' => 'Installera tillägg',
'install_products' => 'Installera produkter',
'search' => 'sök efter tillägg att installera...',
'installed' => 'Installerade tillägg',
'no_plugins' => 'Det finns inga tillägg installerade från marknadsplatsen.',
'recommended' => 'Rekommenderat',
'remove' => 'Ta bort',
'refresh' => 'Uppdatera',
'disabled_label' => 'Avaktivera',
'disabled_help' => 'De avaktiverade tilläggen ignorerades av systemet.',
'frozen_label' => 'Frys uppdateringar',
'frozen_help' => 'Tillägg som är frusna kommer att ignoreras av uppdateringsprocessen.',
'selected_amount' => 'Markerade tillägg: :amount',
'remove_confirm' => 'Är du säker?',
'remove_success' => 'Tilläggen raderades.',
'refresh_confirm' => 'Är du säker?',
'refresh_success' => 'Tilläggen uppdaterades.',
'disable_confirm' => 'Är du säker?',
'disable_success' => 'Tilläggen avaktiverades.',
'enable_success' => 'Aktiverade tilläggen.',
'unknown_plugin' => 'Tillägget har raderats.'
],
'project' => [
'name' => 'Projekt',
'owner_label' => 'Ägare',
'attach' => 'Länka projekt',
'detach' => 'Avlänka projekt',
'none' => 'Inget',
'id' => [
'label' => 'Projekt-ID',
'help' => 'Hur du hittar ditt Projekt-ID',
'missing' => 'Vänligen välj ett Projekt-ID',
],
'detach_confirm' => 'Vill du verkligen avlänka detta projekt?',
'unbind_success' => 'Projektet har avlänkats',
],
'settings' => [
'menu_label' => 'Inställningar',
'not_found' => 'Det går inte att hitta de angivna inställningarna.',
'missing_model' => 'Inställningssidan saknar en modell-definition',
'update_success' => 'Inställningar för :name har uppdaterats',
'return' => 'Återgå till systeminställningar',
'search' => 'Sök'
],
'mail' => [
'log_file' => 'Loggfiler',
'menu_label' => 'E-postkonfiguration',
'menu_description' => 'Hantera e-postinställningar',
'general' => 'Generellt',
'method' => 'E-postmetod',
'sender_name' => 'Avsändarnamn',
'sender_email' => 'Avsändarens e-postadress',
'php_mail' => 'PHP mail',
'smtp' => 'SMTP',
'smtp_address' => 'SMTP-adress',
'smtp_authorization' => 'SMTP-autentisering krävs',
'smtp_authorization_comment' => 'Om din server kräver autentisering, markerar du denna checkbox',
'smtp_username' => 'Användarnamn',
'smtp_password' => 'Lösenord',
'smtp_port' => 'SMTP-port',
'sendmail' => 'Sendmail',
'sendmail_path' => 'Sendmail-sökväg',
'sendmail_path_comment' => 'Vänligen ange sökvägen till sendmail',
],
'mail_templates' => [
'menu_label' => 'E-postmall',
'menu_description' => 'Ändra e-postmallar som skickas till användare och administratörer, hantera e-postlayouter.',
'new_template' => 'Ny mall',
'new_layout' => 'Ny layout',
'template' => 'Mall',
'templates' => 'Mallar',
'menu_layouts_label' => 'E-postmallar',
'layout' => 'Layout',
'layouts' => 'Layouter',
'no_layout' => '-- ingen layout --',
'name' => 'Namn',
'name_comment' => 'Unikt namn för att hänvisa till den här mallen',
'code' => 'Kod',
'code_comment' => 'Unik kod som används för att hänvisa till den här mallen',
'subject' => 'Ämne',
'subject_comment' => 'Mailets ämne',
'description' => 'Beskrivning',
'content_html' => 'HTML',
'content_css' => 'CSS',
'content_text' => 'Text',
'test_send' => 'Skicka ett testmeddelande',
'test_success' => 'Testmeddelandet har skickats.',
'return' => 'Återvänd till mallistan',
'test_confirm' => 'Ett testmeddelande kommer skickas till :email. Fortsätt?',
'saving' => 'Sparar mall...',
'sending' => 'Skickar testmeddelande...',
],
'install' => [
'project_label' => 'Länka till Projekt',
'plugin_label' => 'Installera tillägg',
'theme_label' => 'Installera tema',
'missing_plugin_name' => 'Välj ett tilläggsnamn att installera',
'missing_theme_name' => 'Vänligen specificera ett tema att installera.',
'install_completing' => 'Installationen är klar',
'install_success' => 'Tillägget har installerats',
],
'updates' => [
'title' => 'Hantera uppdateringar',
'name' => 'Uppdatera systemet',
'menu_label' => 'Uppdateringar',
'menu_description' => 'Uppdatera systemet, hantera och installera tillägg och teman.',
'return_link' => 'Återgå till systemuppdateringar',
'check_label' => 'Sök efter uppdateringar',
'retry_label' => 'Försök igen',
'plugin_name' => 'Namn',
'plugin_code' => 'Kod',
'plugin_description' => 'Beskrivning',
'plugin_version' => 'Version',
'plugin_author' => 'Skapare',
'plugin_not_found' => 'Plugin not found',
'core_current_build' => 'Nuvarande build',
'core_build' => 'Build :build',
'core_build_help' => 'Senaste build är tillgänglig.',
'core_downloading' => 'Laddar ner applikationsfiler',
'core_extracting' => 'Packar upp applikationsfiler',
'plugins' => 'Tillägg',
'themes' => 'Teman',
'disabled' => 'Avaktiverade',
'plugin_downloading' => 'Laddar ner tillägg: :name',
'plugin_extracting' => 'Packar upp tillägg: :name',
'plugin_version_none' => 'Nytt tillägg',
'plugin_current_version' => 'Nuvarande version',
'theme_new_install' => 'Installation av nytt tema.',
'theme_downloading' => 'Ladda ner temat: :name',
'theme_extracting' => 'Packar upp temat: :name',
'update_label' => 'Uppdatera systemet',
'update_completing' => 'Slutför uppdatering',
'update_loading' => 'Laddar tillgängliga uppdateringar...',
'update_success' => 'Uppdateringen är slutförd.',
'update_failed_label' => 'Updateringen misslyckades',
'force_label' => 'Tvinga uppdatering',
'found' => [
'label' => 'Hittade nya uppdateringar!',
'help' => 'Klicka på Uppdatera systemet för att påbörja processen.'
],
'none' => [
'label' => 'Inga uppdateringar',
'help' => 'Inga nya uppdateringar hittades.'
],
'important_action' => [
'empty' => 'Välj åtgärd',
'confirm' => 'Bekräfta uppdatering',
'skip' => 'Hoppa över detta tillägg (en gång)',
'ignore' => 'Hoppa över detta tillägg (alltid)',
],
'important_action_required' => 'Åtgärd krävs',
'important_view_guide' => 'Visa uppgraderingsguide',
'important_alert_text' => 'Några uppdateringar behöver din uppmärksamhet.',
'details_title' => 'Tilläggsdetaljer',
'details_view_homepage' => 'Visa hemsida',
'details_readme' => 'Dokumentation',
'details_readme_missing' => 'Det finns ingen dokumentation tillgänglig.',
'details_upgrades' => 'Uppgraderingsguide',
'details_upgrades_missing' => 'Det finns inga uppgraderingsinstruktioner tillgängliga.',
'details_current_version' => 'Nuvarande version',
'details_author' => 'Författare',
],
'server' => [
'connect_error' => 'Ett fel uppstod vid anslutning till servern.',
'response_not_found' => 'Uppdateringsserver kunde ej hittas.',
'response_invalid' => 'Felaktigt svar från servern.',
'response_empty' => 'Tomt svar från servern.',
'file_error' => 'Servern kunde inte leverera paketet.',
'file_corrupt' => 'Filen från servern är korrupt.',
],
'behavior' => [
'missing_property' => 'Klassen :class måste definiera egenskapen $:property som används av :behavior -egenskapen',
],
'config' => [
'not_found' => 'Kunde inte hitta konfigurationsfilen :file definierad för :location',
'required' => 'Konfigurationen som används i :location måste sända med ett värde :property',
],
'zip' => [
'extract_failed' => "Kunde inte packa upp core-fil ':file'.",
],
'event_log' => [
'hint' => 'Denna logg visar en lista över potentiella fel som uppstår i applikationen, såsom undantag och felsökningsinformation.',
'menu_label' => 'Händelselogg',
'menu_description' => 'Visa systemloggmeddelanden med respektive tid och detaljer.',
'empty_link' => 'Töm händelseloggen',
'empty_loading' => 'Tömmer händelselogg...',
'empty_success' => 'Lyckades tömma händelseloggen.',
'return_link' => 'Återvänd till händelseloggen',
'id' => 'ID',
'id_label' => 'Händelse-ID',
'created_at' => 'Datum och tid',
'message' => 'Meddelande',
'level' => 'Nivå'
],
'request_log' => [
'hint' => 'Denna loggen visar en lista med förfrågningar från webbläsare som kan kräva uppmärksamhet. Till exempel, om en besökare öppnar en CMS sida som inte kan hittas, så skapas en post med statuskoden 404.',
'menu_label' => 'Förfrågningslogg',
'menu_description' => 'Visa otillåtna eller omdirigerade förfrågningar, så som Sidan kunde inte hittas (404).',
'empty_link' => 'Töm förfrågningsloggen',
'empty_loading' => 'Tömmer förfrågningsloggen...',
'empty_success' => 'Lyckades tömma förfrågningsloggen.',
'return_link' => 'Återvänd till förfrågningsloggen',
'id' => 'ID',
'id_label' => 'Logg-ID',
'count' => 'Räknare',
'referer' => 'Hänvisning',
'url' => 'URL',
'status_code' => 'Status'
],
'permissions' => [
'name' => 'System',
'manage_system_settings' => 'Hantera systeminställningar',
'manage_software_updates' => 'Hantera systemuppdateringar',
'access_logs' => 'Visa systemloggen',
'manage_mail_templates' => 'Hantera e-postmallar',
'manage_mail_settings' => 'Hantera e-postinställningar',
'manage_other_administrators' => 'Hantera andra administratörer',
'manage_preferences' => 'Hantera inställningar för back-end',
'manage_editor' => 'Hantera inställningar för kodredigerare',
'view_the_dashboard' => 'Visa kontrollpanelen',
'manage_branding' => 'Anpassa back-end',
],
'media' => [
'invalid_path' => "Felaktig filsökväg angiven: ':path'.",
'folder_size_items' => 'föremål',
],
];

View File

@@ -0,0 +1,99 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| such as the size rules. Feel free to tweak each of these messages.
|
*/
"accepted" => ":attribute måste accepteras.",
"active_url" => ":attribute är ej en korrekt URL.",
"after" => ":attribute måste vara ett datum efter :date.",
"alpha" => ":attribute får endast innehålla bokstäver.",
"alpha_dash" => ":attribute får endast innehålla bokstäver, nummer och streck.",
"alpha_num" => ":attribute får endast innehålla bokstäver och nummer",
"array" => ":attribute måste vara en array.",
"before" => ":attribute måste vara ett datum innan :date.",
"between" => [
"numeric" => ":attribute måste vara mellan :min - :max.",
"file" => ":attribute måste vara mellan :min - :max kilobytes.",
"string" => ":attribute måste vara mellan :min - :max tecken.",
"array" => ":attribute måste ha mellan :min - :max objekt.",
],
"confirmed" => ":attribute bekräftelse matchar ej.",
"date" => ":attribute är inte ett korrekt datum.",
"date_format" => ":attribute matchar inte formatet :format.",
"different" => ":attribute och :other måste skilja sig åt.",
"digits" => ":attribute måste vara :digits siffror.",
"digits_between" => ":attribute måste vara between :min and :max siffror.",
"email" => ":attribute format är felaktigt.",
"exists" => "Valt :attribute är felaktigt.",
"image" => ":attribute måste vara en bild.",
"in" => "Valt :attribute är felaktigt.",
"integer" => ":attribute måste vara en siffra.",
"ip" => ":attribute måste vara en giltig epost-adress.",
"max" => [
"numeric" => ":attribute får inte vara större än :max.",
"file" => ":attribute får inte vara större än :max kilobytes.",
"string" => ":attribute får inte vara större än :max tecken.",
"array" => ":attribute får inte innehålla mer än :max objekt.",
],
"mimes" => ":attribute måste vara en fil av typen: :values.",
"extensions" => ":attribute måste ha ett av följande filtillägg: :values.",
"min" => [
"numeric" => ":attribute måste vara minst :min.",
"file" => ":attribute måste vara minst :min kilobytes.",
"string" => ":attribute måste vara minst :min tecken.",
"array" => ":attribute måste ha minst :min objekt.",
],
"not_in" => "Valt :attribute är felaktigt.",
"numeric" => ":attribute måste vara ett number.",
"regex" => ":attribute format är felaktigt.",
"required" => ":attribute är obligatoriskt.",
"required_if" => ":attribute är obligatoriskt när :other is :value.",
"required_with" => ":attribute är obligatoriskt när :values är satt.",
"required_without" => ":attribute är obligatoriskt när :values ej är satt.",
"same" => ":attribute och :other måste matcha.",
"size" => [
"numeric" => ":attribute måste vara :size.",
"file" => ":attribute måste vara :size kilobytes.",
"string" => ":attribute måste vara :size tecken.",
"array" => ":attribute måste innehålla :size objekt.",
],
"unique" => ":attribute är redan upptaget.",
"url" => "Formatet :attribute är felaktigt.",
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
'attributes' => [],
];