From 3e641f63d7206b50c3eebecc53023117b7185dac Mon Sep 17 00:00:00 2001 From: Benjamin Auder <benjamin.a@mailoo.org> Date: Thu, 5 Feb 2015 16:16:00 +0100 Subject: [PATCH] first commit after cleaning --- .htaccess | 13 +++++ HOWTO.md | 112 ++++++++++++++++++++++++++++++++++++++++++ LICENSE | 19 +++++++ README.md | 17 +++++++ a/.gitkeep | 0 common.php | 3 ++ defaults.php | 9 ++++ f/.gitkeep | 0 index.php | 30 +++++++++++ s.php | 57 +++++++++++++++++++++ sample-website.tar.xz | Bin 0 -> 32080 bytes site/404.php | 8 +++ site/dl.php | 20 ++++++++ site/home.php | 7 +++ 14 files changed, 295 insertions(+) create mode 100644 .htaccess create mode 100644 HOWTO.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 a/.gitkeep create mode 100644 common.php create mode 100644 defaults.php create mode 100644 f/.gitkeep create mode 100644 index.php create mode 100644 s.php create mode 100644 sample-website.tar.xz create mode 100644 site/404.php create mode 100644 site/dl.php create mode 100644 site/home.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..6c33b67 --- /dev/null +++ b/.htaccess @@ -0,0 +1,13 @@ +<IfModule mod_rewrite.c> + 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 +</IfModule> 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 : +<pre>website/ + a/ + f/ + site/ + .htaccess + common.php + defaults.php + index.php + s.php +</pre> +- **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 +`<link rel="stylesheet" href="http://cran.r-project.org/R.css"/>`. +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 \<meta\> 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). + +<p> </p> +-------------------------------------------------- + +## 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 : `<a href="<?php echo r('some_folder/mypage'); ?>">'`. 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. + +<p> </p> +-------------------------------------------------- + +## 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 + +//Shared variables and/or functions go here diff --git a/defaults.php b/defaults.php new file mode 100644 index 0000000..b938847 --- /dev/null +++ b/defaults.php @@ -0,0 +1,9 @@ +<?php + +//Set default values here; 'b' stands for "base" + +$b_title = 'My website title'; + +$b_header = ''; + +$b_javascripts = ''; diff --git a/f/.gitkeep b/f/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/index.php b/index.php new file mode 100644 index 0000000..57141bd --- /dev/null +++ b/index.php @@ -0,0 +1,30 @@ +<?php include 's.php'; ?> + +<!DOCTYPE html> +<html> + +<head> + <meta charset="UTF-8"/> + <title><?php echo isset($s_title)?$s_title:$b_title; ?></title> + <!--CSS styles--> + <?php echo isset($s_header)?$s_header:$b_header; ?> +</head> + +<body> + +<!--Insert code for the menu here (or after the banner)--> + +<!--Some website banner (could also come before the menu)--> + +<div class="container"> + <!--A content is always page-specific, thus always defined, and has no default value--> + <?php echo $content; ?> +</div> + +<!--Write the footer here. It is not supposed to be redefined.--> + +<?php echo isset($s_javascripts)?$s_javascripts:$b_javascripts; ?> + +</body> + +</html> diff --git a/s.php b/s.php new file mode 100644 index 0000000..f0ca57d --- /dev/null +++ b/s.php @@ -0,0 +1,57 @@ +<?php + +//Function to get resources (using $nlevels below) +function r($toppath) { + global $nlevels; + $res = ''; + for ($i=0; $i<$nlevels; $i++) + $res .= '../'; + $res .= $toppath; + return $res; +} + +////////////////////////////////////////////////// + +//Start buffering output +ob_start(); + +//Report any error +error_reporting(E_ALL); + +//Sub-path path to the currently running script. If we're directly on top of a +//domain, this will probably be empty, else for instance: /john/mysite +$subpath = str_replace('/index.php', '', $_SERVER['PHP_SELF']); + +//Turn a request like /john/mysite/get/page.php?a=32 into /get/page.php?a=32 +$request = str_replace($subpath, '', $_SERVER['REQUEST_URI']); + +//Turn a request like /get/page.php?a=32 into get/page?a=32 +$request = str_replace('.php', '', $request); + +//Keep only what stands before '?' : get/page +$location = trim(explode('?', $request)[0], '/'); +//[HACK] The following works better on my university server +//~ $interrmark = strrpos($request, '?'); +//~ $location = trim(($interrmark!==FALSE ? substr($request,0,$interrmark) : $request), '/'); + +//If the user asked for main index.php, consider he wanted home page +if ($location == 'index') $location = ''; + +//[HACK] Count the number of sub-levels to go up to meet assets folder +$nlevels = substr_count($location, '/'); + +//Turn get/page into site/get/page.php +$phpfile = 'site/'.(strlen($location)>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 0000000000000000000000000000000000000000..5a91c8268461ec5a597cc6fda12f71f360d8131c GIT binary patch literal 32080 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 L0ssI200dcDRl_^I literal 0 HcmV?d00001 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 @@ +<?php + $s_title = 'Page not found'; + header('HTTP/1.0 404 Not Found'); +?> + +<div> + <p>The requested page does not exist</p> +</div> 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 @@ +<?php + +//Generic binary file downloading (when file exists) + +$filename = r('f/'.$_GET['f']); + +if (file_exists($filename)) { + header('Content-Description: File Transfer'); + header('Content-Type: application/octet-stream'); + header('Content-Disposition: attachment; filename='.basename($filename)); + header('Expires: 0'); + header('Cache-Control: must-revalidate'); + header('Pragma: public'); + header('Content-Length: ' . filesize($filename)); + ob_end_flush(); + readfile($filename); + exit; +} + +else header('Location: '.r('404')); diff --git a/site/home.php b/site/home.php new file mode 100644 index 0000000..6f0e47a --- /dev/null +++ b/site/home.php @@ -0,0 +1,7 @@ +<?php + $s_title = 'Home page'; +?> + +<div> + <p>Some content</p> +</div> -- 2.44.0