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>&nbsp;</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>&nbsp;</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