From: Benjamin Auder Date: Thu, 5 Feb 2015 15:16:00 +0000 (+0100) Subject: first commit after cleaning X-Git-Url: https://git.auder.net/variants/current/doc/css/app_dev.php/%3C?a=commitdiff_plain;h=3e641f63d7206b50c3eebecc53023117b7185dac;p=sview.git first commit after cleaning --- 3e641f63d7206b50c3eebecc53023117b7185dac diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..6c33b67 --- /dev/null +++ b/.htaccess @@ -0,0 +1,13 @@ + + RewriteEngine on + + # indicate the path of your website relatively to the web root + RewriteBase / + + # the two following conditions say "if the requested resource exist, just serve it" + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + + # redirect anything else to index.php (which will analyze the URI) + RewriteRule . index.php + diff --git a/HOWTO.md b/HOWTO.md new file mode 100644 index 0000000..88fe191 --- /dev/null +++ b/HOWTO.md @@ -0,0 +1,112 @@ +## 0. Installation + +In the following, I assume your website is located under http\[s\]://domain/topic/ +and is named "website" (adapt to your case). For example, in https://github.com/blog/ +domain = github.com and topic = blog. + +Get the source code either with `git clone` command or using a zip archive. +Copy all folder contents in the website/ folder : +
website/
+    a/
+    f/
+    site/
+    .htaccess
+    common.php
+    defaults.php
+    index.php
+    s.php
+
+- **a/** (for "assets") is the folder for CSS files, images and javascript codes. +I like to put them respectively in css/, img/ and js/ folders, but the choice is yours. +- **f/** (for "files") is the folder for any downloadable (or browsable) file you may upload. +- **site/** is the main folder containing all your website pages. Three are already there : + - **404.php** : the 404 error page; + - **dl.php** : a script to download binary files; + - **home.php** : the specifications for the welcome page. +- **.htaccess** : its main job consists in routing everything that is not a resource +to the index.php file. +- **common.php** contains shared variables and functions to be used by at least two different pages. +- **defaults.php** defines default variables for any web page, like the title or javascripts block. +- **index.php** contains your website template, which is rendered for any web page +(and filled with specific values defined in pages under site/ folder; anything can be customized). +- **s.php** consists in the framework code, loaded at the beginning of index.php. + +Now (online), in the .htaccess file, change the line `RewriteBase /` to `RewriteBase /topic`. + +## 1. Set default contents + +Edit the file defaults.php with +- A global title to your website; this title can later be mixed with a more specific +page-based title, or be replaced. +- A list of references to CSS style sheets and pre-rendering javascript, like +``. +We will see later how to refer to local style sheets (under a/css). +- Some javascript code which will be loaded by default after every page loads +(e.g. [jquery](http://jquery.com/)). + +Each variable name is prepended with "b\_" to avoid potential conflicts with your own variables. + +## 2. Complete main pages + +### index.php + +Complete +- The menu (at commented location) +- The banner (near the menu, if you want one) +- The footer (if you don't want one, just drop it). + +You can also change the \ tags if needed. + +### site/home.php + +The welcome page. You can choose a title ($s\_title) or use the default one +(by not specifying anything). Style sheets and javascripts can be customized, ...etc. +Any default variable can be used to define a specific variable (prepended with "s\_"). + +### site/404.php + +Customize it; it is probably viewed more often than you think ;-) + +## 3. Write all other pages + +All pages are under site/ folder, and you can nest them in any directory tree. + +**Hint** : if you don't want to load the main template, just end any site file +with a PHP `exit` directive. + +Now we will see how to access pages and resources (images, CSS, files, javascript). + +

 

+-------------------------------------------------- + +## How to view a web page ? + +The page at physical location site/some\_folder/mypage.php is viewed in the web browser at the URL +http\[s\]://domain/topic/website/some\_folder/mypage (thanks to URL rewriting defined in +the .htaccess file). + +Any page can be linked internally using the `r()` PHP function ('r' for "resource"), like in +the following : `'`. This function determines +the nesting level and output the appropriate path. + +## How to access... + +*A CSS style sheet* : its path is given by the following PHP function call +`r('a/css/name_of_the_file.css')` from within any site file (assuming you place all CSS files +under a/css/. They may be inside a nested folder structure). + +*An image* : same as above, with `r('a/img/name_of_the_image.xxx')`. + +*A javascript file* : same as above, with `r('a/js/name_of_the_file.js')`. + +## How to give a download link ? + +Just use a regular link pointing to `r('dl/?f=name_of_the_file.xxx')`, anywhere you want. + +

 

+-------------------------------------------------- + +## Usual workflow + +Just add pages under site/ folder, and potential resources and files under a/ and f/. +All other files will not change a lot. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..73c5672 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Benjamin Auder + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..48ab862 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# sview : tiny PHP web framework. + +It is inspired by [a similar framework](http://shortphp.com) written by Arnór Heiðar Sigurðsson. +In the same spirit but more advanced and more complete, see also [nanoc](http://nanoc.ws/) - in Ruby. + +sview is designed to organize essentially static websites. +It does not offer the features you would expect from a complete MVC framework - +actually, it has only the "V" part. +If you want a more demanding dynamic website, consider using an appropriate tool, +[Symfony](http://symfony.com/) for example. + +## How to use it ? + +The documentation is [right +here](http://git.redua.net/?p=sview.git;a=blob;f=HOWTO.md;hb=HEAD), +and a full website example is [located +here](http://git.redua.net/?p=sview.git;a=blob;f=sample-website.tar.xz;hb=HEAD). diff --git a/a/.gitkeep b/a/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/common.php b/common.php new file mode 100644 index 0000000..c257ed3 --- /dev/null +++ b/common.php @@ -0,0 +1,3 @@ + + + + + + + + <?php echo isset($s_title)?$s_title:$b_title; ?> + + + + + + + + + + +
+ + +
+ + + + + + + + diff --git a/s.php b/s.php new file mode 100644 index 0000000..f0ca57d --- /dev/null +++ b/s.php @@ -0,0 +1,57 @@ +0?$location:'home').'.php'; + +//Include default values for title, headers, javascripts... +include 'defaults.php'; + +//Include common PHP code (functions and constants) +include 'common.php'; + +//Finally, include the PHP file +include (file_exists($phpfile) ? $phpfile : 'site/404.php'); + +//regular template: flush output into $content variable +$content = ob_get_contents(); +ob_end_clean(); diff --git a/sample-website.tar.xz b/sample-website.tar.xz new file mode 100644 index 0000000..5a91c82 Binary files /dev/null and b/sample-website.tar.xz differ diff --git a/site/404.php b/site/404.php new file mode 100644 index 0000000..fb6d1bd --- /dev/null +++ b/site/404.php @@ -0,0 +1,8 @@ + + +
+

The requested page does not exist

+
diff --git a/site/dl.php b/site/dl.php new file mode 100644 index 0000000..441b1c3 --- /dev/null +++ b/site/dl.php @@ -0,0 +1,20 @@ + + +
+

Some content

+