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:
10
themes/demo/pages/404.htm
Normal file
10
themes/demo/pages/404.htm
Normal file
@@ -0,0 +1,10 @@
|
||||
title = "Page not found (404)"
|
||||
url = "/404"
|
||||
layout = "default"
|
||||
==
|
||||
<div class="jumbotron">
|
||||
<div class="container">
|
||||
<h1>Page not found</h1>
|
||||
<p>We're sorry, but the page you requested cannot be found.</p>
|
||||
</div>
|
||||
</div>
|
||||
78
themes/demo/pages/ajax.htm
Normal file
78
themes/demo/pages/ajax.htm
Normal file
@@ -0,0 +1,78 @@
|
||||
title = "AJAX framework"
|
||||
url = "/demo/ajax"
|
||||
layout = "default"
|
||||
==
|
||||
<?php
|
||||
function onTest()
|
||||
{
|
||||
$value1 = input('value1', '');
|
||||
$value2 = input('value2', '');
|
||||
$operation = input('operation', '');
|
||||
|
||||
if (!is_numeric($value1) || $value1 === '' || !is_numeric($value2) || $value2 === '') {
|
||||
$this['result'] = null;
|
||||
return;
|
||||
}
|
||||
|
||||
switch ($operation) {
|
||||
case '+' :
|
||||
$this['result'] = $value1 + $value2;
|
||||
break;
|
||||
case '-' :
|
||||
$this['result'] = $value1 - $value2;
|
||||
break;
|
||||
case '*' :
|
||||
$this['result'] = $value1 * $value2;
|
||||
break;
|
||||
default :
|
||||
$this['result'] = $value1 / $value2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
?>
|
||||
==
|
||||
<div class="jumbotron title-js">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<h1>AJAX framework</h1>
|
||||
<p>This built-in JavaScript framework provides simple but powerful AJAX capabilities. Check out the calculator example below.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Calculator</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form role="form" class="form-inline" data-request="onTest" data-request-update="calcresult: '#result'">
|
||||
<input type="text" class="form-control" value="15" name="value1" style="width:100px" data-track-input>
|
||||
<select class="form-control" name="operation" style="width: 70px" data-track-input>
|
||||
<option>+</option>
|
||||
<option>-</option>
|
||||
<option>*</option>
|
||||
<option>/</option>
|
||||
</select>
|
||||
<input type="text" class="form-control" value="5" name="value2" style="width:100px" data-track-input>
|
||||
<button type="submit" class="btn btn btn-primary" data-attach-loading>Calculate</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="panel-footer" id="result">
|
||||
{% partial "calcresult" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Page Explanation -->
|
||||
<div class="container">{% partial "explain/ajax.htm" %}</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div class="text-center">
|
||||
<p><a href="{{ 'plugins'|page }}" class="btn btn-lg btn-default">Continue to Plugin components</a></p>
|
||||
</div>
|
||||
10
themes/demo/pages/error.htm
Normal file
10
themes/demo/pages/error.htm
Normal file
@@ -0,0 +1,10 @@
|
||||
title = "Error page (500)"
|
||||
url = "/error"
|
||||
layout = "default"
|
||||
==
|
||||
<div class="jumbotron">
|
||||
<div class="container">
|
||||
<h1>Error</h1>
|
||||
<p>We're sorry, but something went wrong and the page cannot be displayed.</p>
|
||||
</div>
|
||||
</div>
|
||||
120
themes/demo/pages/home.htm
Normal file
120
themes/demo/pages/home.htm
Normal file
@@ -0,0 +1,120 @@
|
||||
title = "Demonstration"
|
||||
url = "/"
|
||||
layout = "default"
|
||||
==
|
||||
<div class="jumbotron">
|
||||
<div class="container">
|
||||
{% content "welcome.htm" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="page-header">
|
||||
<h2>Overview <small>Basic concepts</small></h2>
|
||||
</div>
|
||||
<p>
|
||||
This page demonstrates the basic CMS features.
|
||||
Usually each page built with Winter is a combination of a layout, page, partials and content blocks,
|
||||
although in simple cases you can just use a page without anything else.
|
||||
</p>
|
||||
|
||||
<!-- Layouts -->
|
||||
<h3>Layouts</h3>
|
||||
<p class="lead">
|
||||
<i class="icon-th-large"></i> Layouts define the page scaffold.
|
||||
</p>
|
||||
<p>
|
||||
The layout file <code>layouts/default.htm</code> defines the page scaffold —
|
||||
everything that repeats on each page, such as the HTML, HEAD and BODY tags, StyleSheet and JavaScript references.
|
||||
</p>
|
||||
<p>The page menu and footer in the Demo theme are defined in the layout as well.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Pages -->
|
||||
<h3>Pages</h3>
|
||||
<p class="lead">
|
||||
<i class="icon-copy"></i> Pages hold the content for each URL.
|
||||
</p>
|
||||
<p>
|
||||
The page file <code>pages/home.htm</code> defines the page URL (<code>/</code> for this page) and the page content.
|
||||
Pages are rendered inside layouts with this function that should be called in the layout code:
|
||||
</p>
|
||||
<pre>{{ "{% page %}" }}</pre>
|
||||
<p>Using a layout for pages is optional — you can define everything right in the page file.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Partials -->
|
||||
<h3>Partials</h3>
|
||||
<p class="lead">
|
||||
<i class="icon-tags"></i> Partials contain reusable chunks of HTML markup.
|
||||
</p>
|
||||
<p>
|
||||
Partials are chunks of HTML defined in separate files that can be included anywhere.
|
||||
Partials are rendered with:
|
||||
</p>
|
||||
<pre>{{ "{% partial \"partial-name\" %}" }}</pre>
|
||||
<p>You may place partials inside folders too. In this example we placed the footer content to the <code>partials/site/footer.htm</code> partial.</p>
|
||||
<pre>{{ "{% partial \"site/footer\" %}" }}</pre>
|
||||
<p>Partials can be used inside pages, layouts or other partials.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Content blocks -->
|
||||
<h3>Content blocks</h3>
|
||||
<p class="lead">
|
||||
<i class="icon-font"></i> Content blocks are text or HTML blocks that can be edited separately from the page or layout.
|
||||
</p>
|
||||
<p>
|
||||
The introductory text used on this page is defined in the <code>content/welcome.htm</code> file.
|
||||
Content blocks are defined and rendered with:
|
||||
<pre>{{ "{% content \"content-name.htm\" %}" }}</pre>
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Placeholders -->
|
||||
<h3>Placeholders</h3>
|
||||
<p class="lead">
|
||||
<i class="icon-bookmark"></i> Placeholders allow pages to inject content to a layout.
|
||||
</p>
|
||||
<p>
|
||||
The common use is injecting page-specific links to StyleSheet or JavaScript files to the HEAD tag defined in the layout.
|
||||
Placeholders are defined in the layout file and they have names so that they can be referred in the page.
|
||||
Example:
|
||||
</p>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<p>Layout file:</p>
|
||||
<pre>{% content "placeholder/layout.txt" %}</pre>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<p>Page file:</p>
|
||||
<pre>{% content "placeholder/page.txt" %}</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<!-- Assets -->
|
||||
<h3>Assets</h3>
|
||||
<p class="lead">
|
||||
<i class="icon-picture"></i> Assets are resource files like images and stylesheets.
|
||||
</p>
|
||||
<p>This theme stores its asset files (JavaScript, StyleSheet, images, fonts, etc) in the <code>themes/demo/assets</code> directory. This theme is also packaged with these useful 3rd party tools:</p>
|
||||
<ul class="list-inline">
|
||||
<li><a target="_blank" href="http://getbootstrap.com/">Twitter Bootstrap</a></li>
|
||||
<li><a target="_blank" href="http://fontawesome.io/3.2.1/">Font Awesome</a></li>
|
||||
<li><a target="_blank" href="http://www.google.com/fonts/specimen/Lato">Lato webfont</a></li>
|
||||
</ul>
|
||||
<p>You might prefer to remove them for your website implementation.</p>
|
||||
|
||||
<br />
|
||||
|
||||
<div class="text-center">
|
||||
<p><a href="{{ 'ajax'|page }}" class="btn btn-lg btn-default">Continue to AJAX framework</a></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
30
themes/demo/pages/plugins.htm
Normal file
30
themes/demo/pages/plugins.htm
Normal file
@@ -0,0 +1,30 @@
|
||||
title = "Plugin components"
|
||||
url = "/demo/plugins"
|
||||
layout = "default"
|
||||
|
||||
[demoTodo]
|
||||
max = 3
|
||||
==
|
||||
<div class="jumbotron title-js">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<h1>Plugin components</h1>
|
||||
<p>Plugins can provide components, simple building blocks that enrich any page or layout. Check out the todo example below.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
{% component 'demoTodo' %}
|
||||
</div>
|
||||
|
||||
<!-- Page Explanation -->
|
||||
<div class="container">{% partial "explain/plugins.htm" %}</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div class="text-center">
|
||||
<p><a target="_blank" href="https://wintercms.com/docs" class="btn btn-lg btn-default">Learn more at Winter's Documentation</a></p>
|
||||
</div>
|
||||
Reference in New Issue
Block a user