feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
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:
25
modules/cms/console/scaffold/component/component.stub
Normal file
25
modules/cms/console/scaffold/component/component.stub
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php namespace {{studly_author}}\{{studly_plugin}}\Components;
|
||||
|
||||
use Cms\Classes\ComponentBase;
|
||||
|
||||
class {{studly_name}} extends ComponentBase
|
||||
{
|
||||
/**
|
||||
* Gets the details for the component
|
||||
*/
|
||||
public function componentDetails()
|
||||
{
|
||||
return [
|
||||
'name' => '{{name}} Component',
|
||||
'description' => 'No description provided yet...'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the properties provided by the component
|
||||
*/
|
||||
public function defineProperties()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
3
modules/cms/console/scaffold/component/default.stub
Normal file
3
modules/cms/console/scaffold/component/default.stub
Normal file
@@ -0,0 +1,3 @@
|
||||
<p>This is the default markup for component {{name}}</p>
|
||||
|
||||
<small>You can delete this file if you want</small>
|
||||
33
modules/cms/console/scaffold/theme/less/assets/js/app.stub
Normal file
33
modules/cms/console/scaffold/theme/less/assets/js/app.stub
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Application
|
||||
*/
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
jQuery(document).ready(function($) {
|
||||
/*-------------------------------
|
||||
WINTER CMS FLASH MESSAGE HANDLING
|
||||
---------------------------------*/
|
||||
$(document).on('ajaxSetup', function(event, context) {
|
||||
// Enable AJAX handling of Flash messages on all AJAX requests
|
||||
context.options.flash = true;
|
||||
|
||||
// Enable the StripeLoadIndicator on all AJAX requests
|
||||
context.options.loading = $.oc.stripeLoadIndicator;
|
||||
|
||||
// Handle Flash Messages
|
||||
context.options.handleFlashMessage = function(message, type) {
|
||||
$.oc.flashMsg({ text: message, class: type });
|
||||
};
|
||||
|
||||
// Handle Error Messages
|
||||
context.options.handleErrorMessage = function(message) {
|
||||
$.oc.flashMsg({ text: message, class: 'error' });
|
||||
};
|
||||
});
|
||||
});
|
||||
}(jQuery));
|
||||
|
||||
if (typeof(gtag) !== 'function') {
|
||||
gtag = function() { console.log('GoogleAnalytics not present.'); }
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
.content {
|
||||
margin: 2em auto;
|
||||
max-width: 1080px;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
description = "Default layout"
|
||||
==
|
||||
{% partial "site/header" %}
|
||||
|
||||
{% page %}
|
||||
|
||||
{% partial "site/footer" %}
|
||||
8
modules/cms/console/scaffold/theme/less/pages/404.stub
Normal file
8
modules/cms/console/scaffold/theme/less/pages/404.stub
Normal file
@@ -0,0 +1,8 @@
|
||||
title = "Page not found (404)"
|
||||
url = "/404"
|
||||
layout = "default"
|
||||
==
|
||||
<div class="content">
|
||||
<h1>Page not found</h1>
|
||||
<p>We're sorry, but the page you requested cannot be found.</p>
|
||||
</div>
|
||||
8
modules/cms/console/scaffold/theme/less/pages/error.stub
Normal file
8
modules/cms/console/scaffold/theme/less/pages/error.stub
Normal file
@@ -0,0 +1,8 @@
|
||||
title = "Error page (500)"
|
||||
url = "/error"
|
||||
layout = "default"
|
||||
==
|
||||
<div class="content">
|
||||
<h1>Error</h1>
|
||||
<p>We're sorry, but something went wrong and the page cannot be displayed.</p>
|
||||
</div>
|
||||
7
modules/cms/console/scaffold/theme/less/pages/home.stub
Normal file
7
modules/cms/console/scaffold/theme/less/pages/home.stub
Normal file
@@ -0,0 +1,7 @@
|
||||
title = "Home"
|
||||
url = "/"
|
||||
layout = "default"
|
||||
==
|
||||
<div class="content">
|
||||
<h1>Home Page</h1>
|
||||
</div>
|
||||
@@ -0,0 +1,11 @@
|
||||
{% if this.theme.googleanalytics_id is not empty %}
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ this.theme.googleanalytics_id }}"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', '{{ this.theme.googleanalytics_id }}');
|
||||
</script>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,4 @@
|
||||
<link rel="stylesheet" href="{{ ['assets/less/theme.less'] | theme }}">
|
||||
|
||||
{% styles %}
|
||||
{% placeholder head %}
|
||||
@@ -0,0 +1,17 @@
|
||||
<!-- Scripts -->
|
||||
<script src="{{ [
|
||||
'@jquery',
|
||||
'@framework',
|
||||
'@framework.extras',
|
||||
|
||||
'assets/js/app.js',
|
||||
] | theme }}"></script>
|
||||
{% scripts %}
|
||||
|
||||
{% flash %}
|
||||
<p data-control="flash-message" data-interval="7" class="flashmessage {{ type }}">
|
||||
{{ message }}
|
||||
</p>
|
||||
{% endflash %}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% placeholder page_title default %}{{ this.page.title }}{% endplaceholder %}</title>
|
||||
{% partial "meta/styles" %}
|
||||
{% partial "meta/seo" %}
|
||||
<meta name="generator" content="Winter CMS">
|
||||
</head>
|
||||
{% set pageId = this.page.id %}
|
||||
{% set pageTitle = this.page.title %}
|
||||
{% if pageId is empty %}
|
||||
{% set pageId = page.id %}
|
||||
{% endif %}
|
||||
{% if pageTitle is empty %}
|
||||
{% set pageTitle = page.title %}
|
||||
{% endif %}
|
||||
<body class="page-{{ pageId }} layout-{{ this.layout.id }}">
|
||||
9
modules/cms/console/scaffold/theme/less/theme.stub
Normal file
9
modules/cms/console/scaffold/theme/less/theme.stub
Normal file
@@ -0,0 +1,9 @@
|
||||
name: "{{code}}"
|
||||
description: "No description provided yet..."
|
||||
author: "Winter CMS Scaffold"
|
||||
homepage: "https://example.com"
|
||||
code: "{{code}}"
|
||||
form:
|
||||
fields:
|
||||
googleanalytics_id:
|
||||
label: 'Google Analytics ID'
|
||||
1
modules/cms/console/scaffold/theme/less/version.stub
Normal file
1
modules/cms/console/scaffold/theme/less/version.stub
Normal file
@@ -0,0 +1 @@
|
||||
1.0.1: 'Initial version'
|
||||
@@ -0,0 +1,2 @@
|
||||
node_modules/
|
||||
dist/
|
||||
9
modules/cms/console/scaffold/theme/tailwind/README.stub
Normal file
9
modules/cms/console/scaffold/theme/tailwind/README.stub
Normal file
@@ -0,0 +1,9 @@
|
||||
# {{code}} Winter CMS Theme
|
||||
|
||||
This theme uses [Vite](https://wintercms.com/docs/develop/docs/console/asset-compilation-vite) for asset compilation. It also uses [Tailwind CSS](https://tailwindcss.com/).
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. Run [`artisan vite:install`](https://wintercms.com/docs/console/asset-compilation#mix-install) and agree when asked to modify the `package.json` file for your project in order to register & install this theme's dependencies.
|
||||
2. Run [`artisan vite:compile -p theme-{{code}} --production`](https://wintercms.com/docs/develop/docs/console/asset-compilation-vite#compile-a-vite-packages) to compile the asset files for this theme.
|
||||
3. Optionally, run [`artisan vite:watch theme-{{code}}`](https://wintercms.com/docs/develop/docs/console/asset-compilation-vite#watch-a-vite-package) while actively working on the theme to have the assets automatically recompiled in the background for you every time you make a change.
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'options' => [
|
||||
'googleanalytics_id' => 'Google Analytics ID',
|
||||
'color_primary' => 'Primary Color',
|
||||
'color_secondary' => 'secondary Color',
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,8 @@
|
||||
description = "Default layout"
|
||||
default = true
|
||||
==
|
||||
{% partial "site/header" %}
|
||||
|
||||
{% page %}
|
||||
|
||||
{% partial "site/footer" %}
|
||||
@@ -0,0 +1,8 @@
|
||||
title = "Page not found (404)"
|
||||
url = "/404"
|
||||
layout = "default"
|
||||
==
|
||||
<div>
|
||||
<h1>Page not found</h1>
|
||||
<p>We're sorry, but the page you requested cannot be found.</p>
|
||||
</div>
|
||||
@@ -0,0 +1,8 @@
|
||||
title = "Error page (500)"
|
||||
url = "/error"
|
||||
layout = "default"
|
||||
==
|
||||
<div>
|
||||
<h1>Error</h1>
|
||||
<p>We're sorry, but something went wrong and the page cannot be displayed.</p>
|
||||
</div>
|
||||
@@ -0,0 +1,7 @@
|
||||
title = "Home"
|
||||
url = "/"
|
||||
layout = "default"
|
||||
==
|
||||
<div class="container mx-auto">
|
||||
<h1><span class="text-primary">Home</span> <span class="text-secondary">Page</span></h1>
|
||||
</div>
|
||||
@@ -0,0 +1,11 @@
|
||||
{% if this.theme.googleanalytics_id is not empty %}
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ this.theme.googleanalytics_id }}"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', '{{ this.theme.googleanalytics_id }}');
|
||||
</script>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,12 @@
|
||||
==
|
||||
{{ vite(['assets/src/css/theme-{{code}}.css'], 'theme-{{code}}') }}
|
||||
|
||||
<style>
|
||||
:root {
|
||||
--primary: {{ this.theme.color_primary }};
|
||||
--secondary: {{ this.theme.color_secondary }};
|
||||
}
|
||||
</style>
|
||||
|
||||
{% styles %}
|
||||
{% placeholder head %}
|
||||
@@ -0,0 +1,21 @@
|
||||
<!-- Scripts -->
|
||||
|
||||
{# jQuery AJAX Framework #}
|
||||
<script src="{{ [
|
||||
'@jquery',
|
||||
'@framework',
|
||||
'@framework.extras',
|
||||
] | theme }}"></script>
|
||||
|
||||
{# Vite extracted assets #}
|
||||
{{ vite(['assets/src/js/theme-{{code}}.js'], 'theme-{{code}}') }}
|
||||
|
||||
{% scripts %}
|
||||
|
||||
{% flash %}
|
||||
<p data-control="flash-message" data-interval="7" class="flashmessage {{ type }}">
|
||||
{{ message }}
|
||||
</p>
|
||||
{% endflash %}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% placeholder page_title default %}{{ this.page.title }}{% endplaceholder %}</title>
|
||||
{% partial "meta/styles" %}
|
||||
{% partial "meta/seo" %}
|
||||
<meta name="generator" content="Winter CMS">
|
||||
</head>
|
||||
{% set pageId = this.page.id %}
|
||||
{% set pageTitle = this.page.title %}
|
||||
{% if pageId is empty %}
|
||||
{% set pageId = page.id %}
|
||||
{% endif %}
|
||||
{% if pageTitle is empty %}
|
||||
{% set pageTitle = page.title %}
|
||||
{% endif %}
|
||||
<body class="page-{{ pageId }} layout-{{ this.layout.id }}">
|
||||
21
modules/cms/console/scaffold/theme/tailwind/theme.stub
Normal file
21
modules/cms/console/scaffold/theme/tailwind/theme.stub
Normal file
@@ -0,0 +1,21 @@
|
||||
name: "{{code}}"
|
||||
description: "No description provided yet..."
|
||||
author: "Winter CMS Scaffold"
|
||||
homepage: "https://example.com"
|
||||
code: "{{code}}"
|
||||
form:
|
||||
fields:
|
||||
googleanalytics_id:
|
||||
label: themes.{{code}}::lang.options.googleanalytics_id
|
||||
type: text
|
||||
span: full
|
||||
color_primary:
|
||||
label: themes.{{code}}::lang.options.color_primary
|
||||
type: colorpicker
|
||||
span: left
|
||||
default: "#103141"
|
||||
color_secondary:
|
||||
label: themes.{{code}}::lang.options.color_secondary
|
||||
type: colorpicker
|
||||
span: right
|
||||
default: "#2DA7C7"
|
||||
1
modules/cms/console/scaffold/theme/tailwind/version.stub
Normal file
1
modules/cms/console/scaffold/theme/tailwind/version.stub
Normal file
@@ -0,0 +1 @@
|
||||
1.0.0: 'Initial version'
|
||||
Reference in New Issue
Block a user