<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://archive.codecoupler.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tm</id>
	<title>CodeCoupler Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://archive.codecoupler.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tm"/>
	<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Spezial:Beitr%C3%A4ge/Tm"/>
	<updated>2026-05-03T00:47:47Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=467</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=467"/>
		<updated>2017-11-29T19:39:18Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Backend Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Backend Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://benedmunds.com/ion_auth/ Ion Auth]&lt;br /&gt;
|| [https://github.com/benedmunds/CodeIgniter-Ion-Auth/archive/2.zip Master Branch]&lt;br /&gt;
|| [http://benedmunds.com/ion_auth/ Documentation]&lt;br /&gt;
|| [http://benedmunds.com/ion_auth/ Download]&lt;br /&gt;
|| [https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://tcpdf.org/ TCPDF]&lt;br /&gt;
|| [https://github.com/tecnickcom/TCPDF/archive/6.2.13.tar.gz 6.2.13]&lt;br /&gt;
|| [https://tcpdf.org/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/tecnickcom/TCPDF/releases Download]&lt;br /&gt;
|| [https://github.com/tecnickcom/TCPDF/blob/master/LICENSE.TXT LGPL]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://github.com/PHPMailer/PHPMailer PHPMailer]&lt;br /&gt;
|| [https://github.com/PHPMailer/PHPMailer/archive/v6.0.1.tar.gz 6.0.1]&lt;br /&gt;
|| [https://github.com/PHPMailer/PHPMailer/wiki Documentation]&lt;br /&gt;
|| [https://github.com/PHPMailer/PHPMailer/releases Download]&lt;br /&gt;
|| [https://github.com/PHPMailer/PHPMailer/blob/master/LICENSE LGPL-2.1]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Frontend Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/ Moment.js]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-with-locales.min.js 2.19.2]&lt;br /&gt;
|| [https://momentjs.com/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/timezone/ Moment Timezone]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-timezone-with-data.min.js 0.5.14-2017c]&lt;br /&gt;
|| [https://momentjs.com/timezone/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/timezone/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment-timezone/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://material.io/icons/ Google Material Icons]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/archive/3.0.1.tar.gz 3.0.1]&lt;br /&gt;
|| [http://google.github.io/material-design-icons/ Documentation]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/tree/master/iconfont Download]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/blob/master/LICENSE Apache License 2.0]&lt;br /&gt;
|| Only the icon font.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Special Thanks ==&lt;br /&gt;
&lt;br /&gt;
Special thanks go to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=466</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=466"/>
		<updated>2017-11-29T15:21:16Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Backend Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Backend Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://benedmunds.com/ion_auth/ Ion Auth]&lt;br /&gt;
|| [https://github.com/benedmunds/CodeIgniter-Ion-Auth/archive/2.zip Master Branch]&lt;br /&gt;
|| [http://benedmunds.com/ion_auth/ Documentation]&lt;br /&gt;
|| [http://benedmunds.com/ion_auth/ Download]&lt;br /&gt;
|| [https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://tcpdf.org/ TCPDF]&lt;br /&gt;
|| [https://github.com/tecnickcom/TCPDF/archive/6.2.13.tar.gz 6.2.13]&lt;br /&gt;
|| [https://tcpdf.org/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/tecnickcom/TCPDF/releases Download]&lt;br /&gt;
|| [https://github.com/tecnickcom/TCPDF/blob/master/LICENSE.TXT LGPL]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Frontend Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/ Moment.js]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-with-locales.min.js 2.19.2]&lt;br /&gt;
|| [https://momentjs.com/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/timezone/ Moment Timezone]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-timezone-with-data.min.js 0.5.14-2017c]&lt;br /&gt;
|| [https://momentjs.com/timezone/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/timezone/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment-timezone/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://material.io/icons/ Google Material Icons]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/archive/3.0.1.tar.gz 3.0.1]&lt;br /&gt;
|| [http://google.github.io/material-design-icons/ Documentation]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/tree/master/iconfont Download]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/blob/master/LICENSE Apache License 2.0]&lt;br /&gt;
|| Only the icon font.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Special Thanks ==&lt;br /&gt;
&lt;br /&gt;
Special thanks go to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=465</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=465"/>
		<updated>2017-11-26T18:46:34Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it is difficult to move an application from one subfolder into another or into the root folder. Another problem is moving your applcation to another domain. It would be much simpler if the application use only relative URIs and all the other stuff would be done automatically.&lt;br /&gt;
&lt;br /&gt;
In the most cases there are at least two points in your application you must always have to remember to modify if you move your application around. If you are using redirections with &#039;&#039;&#039;mod_rewrite&#039;&#039;&#039; you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; and the most frameworks need extra configuration and special code to generate a portable URIs.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links without to know about your current place. But this not very handy as you have always remember to use these functions in every link and to setup correctly your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039;. An automatic base url detection is built in, but for security reasons the IP address of the your server will be used to compose the URI instead of your host name ([https://expressionengine.com/blog/http-host-and-server-name-security-issues read more about security concerns of detecting the host name automatically]). This will not work in the most cases of course. Furthermore these functions produce absolute URLs, which is not necessary imo.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using only relative URIs ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes an htaccess file that detects and save the current base folder in an environment variable. This variable will be used to set an absolute path into the configuration variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in codeigniter, including the base folder of your application and excluding any host name. From now on CodeIgniter functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; will produce an absolute URI without a hostname and with the correct subfolder if needed.&lt;br /&gt;
&lt;br /&gt;
In an HTML page you can set this base in your header and use only relative links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?= base_url() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By the way: If you are using the template &#039;&#039;&#039;html&#039;&#039;&#039; it will be already set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
With this modification all the libraries using &#039;&#039;&#039;base_url()&#039;&#039;&#039;, &#039;&#039;&#039;site_url()&#039;&#039;&#039; or some helpers like &#039;&#039;&#039;redirect()&#039;&#039;&#039; which call these function will work in the most cases like before. There are only some point you should notice:&lt;br /&gt;
&lt;br /&gt;
1.) There is a limitaion in the usage of the second paramter &#039;&#039;&#039;$protocoll&#039;&#039;&#039; of the both functions. As we use only absolute paths and not any host name or IP address, we cannot set a protocol. The functions will check if the given protocol is the current protocol (http or https). If not they will show an error. As the limitation occur only if you switch the protocol from http to https (or vice versa) you should think about to call all your pages with only one protocol.&lt;br /&gt;
&lt;br /&gt;
2.) Do not use the function &#039;&#039;&#039;current_url()&#039;&#039;&#039; for building links to the current controller. The function will return an absolute path to this controller, but the base tag in your header will prepend the absolute path to your application again. Using this function in &#039;&#039;&#039;redirect(current_url())&#039;&#039;&#039; will work, but for links you should use &#039;&#039;&#039;get_instance()-&amp;gt;uri-&amp;gt;uri_string()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need this functionality you must set your domain name in the variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039;. You could of course setup the following code to use your domain name and benefiting from the automatic base detection, The variable {CC_BASE_URL} will be automatically replaced with the detected base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/{CC_BASE_URL}&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relative Links vs Absolute Links ==&lt;br /&gt;
&lt;br /&gt;
If you try to search the internet for &#039;&#039;&#039;relative links vs absolute links&#039;&#039;&#039; you will find only one multiple time copied and translated opinion of SEO people. They say that it is bad to use relative because of two things:&lt;br /&gt;
&lt;br /&gt;
# Duplicate Content&lt;br /&gt;
# Scraping&lt;br /&gt;
&lt;br /&gt;
Some of them mention that developing a big website needs staging and therefore moving the application to different locations, domains and sometimes subfolders, but they come to a result that this should be solved by the programmers &amp;quot;somehow&amp;quot;. On one website WordPress was mentioned as examplary because it uses only absolute URLs. I do not think that the author ever had to move a WordPress Website from one domain to another. It&#039; the hell.&lt;br /&gt;
&lt;br /&gt;
But let us see what we could do to make our SEO friends happy and not to make our application ugly. &lt;br /&gt;
&lt;br /&gt;
The first point is that websites often are not configured well and they are reachable under four URLs:&lt;br /&gt;
&lt;br /&gt;
# http://www.domain.tld&lt;br /&gt;
# http://domain.tld&lt;br /&gt;
# https://www.domain.tld&lt;br /&gt;
# https://domain.tld&lt;br /&gt;
&lt;br /&gt;
The most simple solution is to redirect three of these domains to one final domain with the search engine friendly 301 header. This can be done with some simple lines in the &#039;&#039;&#039;htaccess&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
The second point is nothing you should worry about. If a scraper copies your site it is an inconsiderable detail if you have used relative or absolute links. I think it is much easier for a scraper to modify an application that uses absolute links, because he have only to search and replace the domainname. It is like you say to him &amp;quot;Hey, look here. This is the place you have to change the code to work my application under your domain!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=CC_TMP_URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_TMP_URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;CC_TMP_URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_BASE_URL} ^$&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=CC_BASE_URL:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_BASE_URL is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable CC_TMP_URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable CC_BASE_URL. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:CC_BASE_URL}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=464</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=464"/>
		<updated>2017-11-26T18:44:16Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Relative Links vs Absolute Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it is difficult to move an application from one subfolder into another or into the root folder. Another problem is moving your applcation to another domain. It would be much simpler if the application use only relative URIs and all the other stuff would be done automatically.&lt;br /&gt;
&lt;br /&gt;
In the most cases there are at least two points in your application you must always have to remember to modify if you move your application around. If you are using redirections with &#039;&#039;&#039;mod_rewrite&#039;&#039;&#039; you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; and the most frameworks need extra configuration and special code to generate a relative URL.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links without to know about your current place. But this not very handy as you have always remember to use these functions in every link and to setup correctly your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039;. An automatic base url detection is built in, but for security reasons the IP address of the your server will be used to compose the URI instead of your host name ([https://expressionengine.com/blog/http-host-and-server-name-security-issues read more about security concerns of detecting the host name automatically]). This will not work in the most cases of course. Furthermore these functions produce absolute URLs, which is not necessary imo.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using only relative URIs ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes an htaccess file that detects and save the current base folder in an environment variable. This variable will be used to set an absolute path into the configuration variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in codeigniter, including the base folder of your application and excluding any host name. From now on CodeIgniter functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; will produce an absolute URI without a hostname and with the correct subfolder if needed.&lt;br /&gt;
&lt;br /&gt;
In an HTML page you can set this base in your header and use only relative links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?= base_url() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By the way: If you are using the template &#039;&#039;&#039;html&#039;&#039;&#039; it will be already set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
With this modification all the libraries using &#039;&#039;&#039;base_url()&#039;&#039;&#039;, &#039;&#039;&#039;site_url()&#039;&#039;&#039; or some helpers like &#039;&#039;&#039;redirect()&#039;&#039;&#039; which call these function will work in the most cases like before. There are only some point you should notice:&lt;br /&gt;
&lt;br /&gt;
1.) There is a limitaion in the usage of the second paramter &#039;&#039;&#039;$protocoll&#039;&#039;&#039; of the both functions. As we use only absolute paths and not any host name or IP address, we cannot set a protocol. The functions will check if the given protocol is the current protocol (http or https). If not they will show an error. As the limitation occur only if you switch the protocol from http to https (or vice versa) you should think about to call all your pages with only one protocol.&lt;br /&gt;
&lt;br /&gt;
2.) Do not use the function &#039;&#039;&#039;current_url()&#039;&#039;&#039; for building links to the current controller. The function will return an absolute path to this controller, but the base tag in your header will prepend the absolute path to your application again. Using this function in &#039;&#039;&#039;redirect(current_url())&#039;&#039;&#039; will work, but for links you should use &#039;&#039;&#039;get_instance()-&amp;gt;uri-&amp;gt;uri_string()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need this functionality you must set your domain name in the variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039;. You could of course setup the following code to use your domain name and benefiting from the automatic base detection, The variable {CC_BASE_URL} will be automatically replaced with the detected base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/{CC_BASE_URL}&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relative Links vs Absolute Links ==&lt;br /&gt;
&lt;br /&gt;
If you try to search the internet for &#039;&#039;&#039;relative links vs absolute links&#039;&#039;&#039; you will find only one multiple time copied and translated opinion of SEO people. They say that it is bad to use relative because of two things:&lt;br /&gt;
&lt;br /&gt;
# Duplicate Content&lt;br /&gt;
# Scraping&lt;br /&gt;
&lt;br /&gt;
Some of them mention that developing a big website needs staging and therefore moving the application to different locations, domains and sometimes subfolders, but they come to a result that this should be solved by the programmers &amp;quot;somehow&amp;quot;. On one website WordPress was mentioned as examplary because it uses only absolute URLs. I do not think that the author ever had to move a WordPress Website from one domain to another. It&#039; the hell.&lt;br /&gt;
&lt;br /&gt;
But let us see what we could do to make our SEO friends happy and not to make our application ugly. &lt;br /&gt;
&lt;br /&gt;
The first point is that websites often are not configured well and they are reachable under four URLs:&lt;br /&gt;
&lt;br /&gt;
# http://www.domain.tld&lt;br /&gt;
# http://domain.tld&lt;br /&gt;
# https://www.domain.tld&lt;br /&gt;
# https://domain.tld&lt;br /&gt;
&lt;br /&gt;
The most simple solution is to redirect three of these domains to one final domain with the search engine friendly 301 header. This can be done with some simple lines in the &#039;&#039;&#039;htaccess&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
The second point is nothing you should worry about. If a scraper copies your site it is an inconsiderable detail if you have used relative or absolute links. I think it is much easier for a scraper to modify an application that uses absolute links, because he have only to search and replace the domainname. It is like you say to him &amp;quot;Hey, look here. This is the place you have to change the code to work my application under your domain!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=CC_TMP_URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_TMP_URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;CC_TMP_URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_BASE_URL} ^$&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=CC_BASE_URL:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_BASE_URL is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable CC_TMP_URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable CC_BASE_URL. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:CC_BASE_URL}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=463</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=463"/>
		<updated>2017-11-26T18:42:34Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it is difficult to move an application from one subfolder into another or into the root folder. Another problem is moving your applcation to another domain. It would be much simpler if the application use only relative URIs and all the other stuff would be done automatically.&lt;br /&gt;
&lt;br /&gt;
In the most cases there are at least two points in your application you must always have to remember to modify if you move your application around. If you are using redirections with &#039;&#039;&#039;mod_rewrite&#039;&#039;&#039; you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; and the most frameworks need extra configuration and special code to generate a relative URL.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links without to know about your current place. But this not very handy as you have always remember to use these functions in every link and to setup correctly your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039;. An automatic base url detection is built in, but for security reasons the IP address of the your server will be used to compose the URI instead of your host name ([https://expressionengine.com/blog/http-host-and-server-name-security-issues read more about security concerns of detecting the host name automatically]). This will not work in the most cases of course. Furthermore these functions produce absolute URLs, which is not necessary imo.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using only relative URIs ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes an htaccess file that detects and save the current base folder in an environment variable. This variable will be used to set an absolute path into the configuration variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in codeigniter, including the base folder of your application and excluding any host name. From now on CodeIgniter functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; will produce an absolute URI without a hostname and with the correct subfolder if needed.&lt;br /&gt;
&lt;br /&gt;
In an HTML page you can set this base in your header and use only relative links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?= base_url() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By the way: If you are using the template &#039;&#039;&#039;html&#039;&#039;&#039; it will be already set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
With this modification all the libraries using &#039;&#039;&#039;base_url()&#039;&#039;&#039;, &#039;&#039;&#039;site_url()&#039;&#039;&#039; or some helpers like &#039;&#039;&#039;redirect()&#039;&#039;&#039; which call these function will work in the most cases like before. There are only some point you should notice:&lt;br /&gt;
&lt;br /&gt;
1.) There is a limitaion in the usage of the second paramter &#039;&#039;&#039;$protocoll&#039;&#039;&#039; of the both functions. As we use only absolute paths and not any host name or IP address, we cannot set a protocol. The functions will check if the given protocol is the current protocol (http or https). If not they will show an error. As the limitation occur only if you switch the protocol from http to https (or vice versa) you should think about to call all your pages with only one protocol.&lt;br /&gt;
&lt;br /&gt;
2.) Do not use the function &#039;&#039;&#039;current_url()&#039;&#039;&#039; for building links to the current controller. The function will return an absolute path to this controller, but the base tag in your header will prepend the absolute path to your application again. Using this function in &#039;&#039;&#039;redirect(current_url())&#039;&#039;&#039; will work, but for links you should use &#039;&#039;&#039;get_instance()-&amp;gt;uri-&amp;gt;uri_string()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need this functionality you must set your domain name in the variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039;. You could of course setup the following code to use your domain name and benefiting from the automatic base detection, The variable {CC_BASE_URL} will be automatically replaced with the detected base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/{CC_BASE_URL}&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relative Links vs Absolute Links ==&lt;br /&gt;
&lt;br /&gt;
If you try to search the internet for &#039;&#039;&#039;relative links vs absolute links&#039;&#039;&#039; you will find only one multiple time copied and translated opinion of SEO people. They say that it is bad to use relative because of two things:&lt;br /&gt;
&lt;br /&gt;
1. Duplicate Content&lt;br /&gt;
2. Scraping&lt;br /&gt;
&lt;br /&gt;
Some of them mention that developing a big website needs staging and therefore moving the application to different locations, domains and sometimes subfolders, but they come to a result that this should be solved by the programmers &amp;quot;somehow&amp;quot;. On one website WordPress was mentioned as examplary because it uses only absolute URLs. I do not think that the author ever had to move a WordPress Website from one domain to another. It&#039; the hell.&lt;br /&gt;
&lt;br /&gt;
But let us see what we could do to make our SEO friends happy and not to make our application ugly. &lt;br /&gt;
&lt;br /&gt;
The first point is that websites often are not configured well and they are reachable under four URLs:&lt;br /&gt;
&lt;br /&gt;
1. http://www.domain.tld&lt;br /&gt;
2. http://domain.tld&lt;br /&gt;
3. https://www.domain.tld&lt;br /&gt;
4. https://domain.tld&lt;br /&gt;
&lt;br /&gt;
The most simple solution is to redirect three of these domains to one final domain with the search engine friendly 301 header. This can be done with some simple lines in the &#039;&#039;&#039;htaccess&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
The second point is nothing you should worry about. If a scraper copies your site it is an inconsiderable detail if you have used relative or absolute links. I think it is much easier for a scraper to modify an application that uses absolute links, because he have only to search and replace the domainname. It is like you say to him &amp;quot;Hey, look here. This is the place you have to change the code to work my application under your domain!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=CC_TMP_URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_TMP_URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;CC_TMP_URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_BASE_URL} ^$&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=CC_BASE_URL:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_BASE_URL is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable CC_TMP_URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable CC_BASE_URL. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:CC_BASE_URL}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=462</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=462"/>
		<updated>2017-11-22T15:15:44Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Some Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it is difficult to move an application from one subfolder into another or into the root folder. Another problem is moving your applcation to another domain. It would be much simpler if the application use only relative url&#039;s and all the other stuff would be done automatically.&lt;br /&gt;
&lt;br /&gt;
In the most cases there are at least two points in your application you must always have to remember to modify if you move your application around. If you are using redirections with &#039;&#039;&#039;mod_rewrite&#039;&#039;&#039; you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; and the most frameworks need extra configuration and special code to generate a relative URL.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links without to know about your current place. But this not very handy as you have always remember to use these functions in every link and to setup correctly your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039;. An automatic base url detection is built in, but for security reasons the IP address of the your server will be used to compose the URI instead of your host name ([https://expressionengine.com/blog/http-host-and-server-name-security-issues read more about security concerns of detecting the host name automatically]). This will not work in the most cases of course. Furthermore these functions produce absolute URLs, which is not necessary imo.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in an environment variable. This variable will be used to set an absolute URL into the configuration variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in codeigniter. From now on all CodeIgniter functions will produce an URI without a hostname and with the correct subfolder if needed.&lt;br /&gt;
&lt;br /&gt;
In an HTML page you can set your base like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?= base_url() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By the way: If you are using the template &#039;&#039;&#039;html&#039;&#039;&#039; it will be already set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
With this modification all the libraries using &#039;&#039;&#039;base_url()&#039;&#039;&#039;, &#039;&#039;&#039;site_url()&#039;&#039;&#039; or some helpers like &#039;&#039;&#039;redirect()&#039;&#039;&#039; which call these function will work in the most cases like before. The only limitaion is the usage of the second paramter &#039;&#039;&#039;$protocoll&#039;&#039;&#039; of the both functions. As we use only absolute paths and not any host name or IP address, we cannot set a protocol. The functions will check if the given protocol is the current protocol (http or https). If not they will show an error.&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need this functionality you must set your domain name in the variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039;. You could of course setup the following code to use your domain name and benefiting from the automatic base detection, The variable {CC_BASE_URL} will be automatically replaced with the detected base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/{CC_BASE_URL}&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the limitation occur only if you switch the protocol from http to https (or vice versa) you should think about to call all your pages with only one protocol.&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=CC_TMP_URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_TMP_URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;CC_TMP_URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_BASE_URL} ^$&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=CC_BASE_URL:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_BASE_URL is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable CC_TMP_URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable CC_BASE_URL. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:CC_BASE_URL}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=461</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=461"/>
		<updated>2017-11-22T14:47:09Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it is difficult to move an application from one subfolder into another or into the root folder. Another problem is moving your applcation to another domain. It would be much simpler if the application use only relative url&#039;s and all the other stuff would be done automatically.&lt;br /&gt;
&lt;br /&gt;
In the most cases there are at least two points in your application you must always have to remember to modify if you move your application around. If you are using redirections with &#039;&#039;&#039;mod_rewrite&#039;&#039;&#039; you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; and the most frameworks need extra configuration and special code to generate a relative URL.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links without to know about your current place. But this not very handy as you have always remember to use these functions in every link and to setup correctly your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039;. An automatic base url detection is built in, but for security reasons the IP address of the your server will be used to compose the URI instead of your host name ([https://expressionengine.com/blog/http-host-and-server-name-security-issues read more about security concerns of detecting the host name automatically]). This will not work in the most cases of course. Furthermore these functions produce absolute URLs, which is not necessary imo.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in an environment variable. This variable will be used to set an absolute URL into the configuration variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in codeigniter. From now on all CodeIgniter functions will produce an URI without a hostname and with the correct subfolder if needed.&lt;br /&gt;
&lt;br /&gt;
In an HTML page you can set your base like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?= base_url() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By the way: If you are using the template &#039;&#039;&#039;html&#039;&#039;&#039; it will be already set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
With this modification all the libraries using &#039;&#039;&#039;base_url()&#039;&#039;&#039;, &#039;&#039;&#039;site_url()&#039;&#039;&#039; or some helpers like &#039;&#039;&#039;redirect()&#039;&#039;&#039; which call these function will work in the most cases like before. The only limitaion is the usage of the second paramter &#039;&#039;&#039;$protocoll&#039;&#039;&#039; of the both functions. As we use only absolute paths and not any host name or IP address, we cannot set a protocol. The functions will show an error if you try to use the htaccess file and call them with a protocol.&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need this functionality you must set your domain name in the variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039;. You could of course setup the following code to use your domain name and benefiting from the automatic base detection, The variable {CC_BASE_URL} will be automatically replaced with the detected base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/{CC_BASE_URL}&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=CC_TMP_URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_TMP_URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;CC_TMP_URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_BASE_URL} ^$&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=CC_BASE_URL:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_BASE_URL is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable CC_TMP_URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable CC_BASE_URL. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:CC_BASE_URL}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=460</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=460"/>
		<updated>2017-11-22T14:46:08Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it is difficult to move an application from one subfolder into another or into the root folder. Another problem is moving your applcation to another domain. It would be much simpler if the application use only relative url&#039;s and all the other stuff would be done automatically.&lt;br /&gt;
&lt;br /&gt;
In the most cases there are at least two points in your application you must always have to remember to modify if you move your application around. If you are using redirections with &#039;&#039;&#039;mod_rewrite&#039;&#039;&#039; you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; and the most frameworks need extra configuration and special code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links without to know about your current place. But this not very handy as you have always remember to use these functions in every link and to setup correctly your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039;. An automatic base url detection is built in, but for security reasons the IP address of the your server will be used to compose the URI instead of your host name ([https://expressionengine.com/blog/http-host-and-server-name-security-issues read more about security concerns of detecting the host name automatically]). This will not work in the most cases of course. Furthermore these functions produce absolute URLs, which is not necessary imo.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in an environment variable. This variable will be used to set an absolute URL into the configuration variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in codeigniter. From now on all CodeIgniter functions will produce an URI without a hostname and with the correct subfolder if needed.&lt;br /&gt;
&lt;br /&gt;
In an HTML page you can set your base like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?= base_url() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By the way: If you are using the template &#039;&#039;&#039;html&#039;&#039;&#039; it will be already set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
With this modification all the libraries using &#039;&#039;&#039;base_url()&#039;&#039;&#039;, &#039;&#039;&#039;site_url()&#039;&#039;&#039; or some helpers like &#039;&#039;&#039;redirect()&#039;&#039;&#039; which call these function will work in the most cases like before. The only limitaion is the usage of the second paramter &#039;&#039;&#039;$protocoll&#039;&#039;&#039; of the both functions. As we use only absolute paths and not any host name or IP address, we cannot set a protocol. The functions will show an error if you try to use the htaccess file and call them with a protocol.&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need this functionality you must set your domain name in the variable &#039;&#039;&#039;base_url&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039;. You could of course setup the following code to use your domain name and benefiting from the automatic base detection, The variable {CC_BASE_URL} will be automatically replaced with the detected base:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/{CC_BASE_URL}&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=CC_TMP_URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_TMP_URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;CC_TMP_URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:CC_BASE_URL} ^$&lt;br /&gt;
RewriteCond %{ENV:CC_TMP_URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=CC_BASE_URL:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable CC_BASE_URL is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable CC_TMP_URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable CC_BASE_URL. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:CC_BASE_URL}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=459</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=459"/>
		<updated>2017-11-22T08:32:26Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
Sometimes it is difficult to move an application from one subfolder into another or into the root folder. Another problem is moving your applcation to another domain. It would be much simpler is the application use only relative url&#039;s and all the other stuff would be done automatically.&lt;br /&gt;
&lt;br /&gt;
In the most cases there are at least two points in your application you must always have to remember to modify if you move your application around. If you are using redirections with &#039;&#039;&#039;mod_rewrite&#039;&#039;&#039; you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. And the most frameworks need extra configuration and special code to generate relative Url&#039;s. With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links to ressources your application without to know about your current place. But this not very handy as you have always remember to use these functions in every link and to setup correctly your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039;. Furthermore these functions produce absolute URLs, which is not necessary imo:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in a server variable and redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Now you can set the base in your html page and use only relative URLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?= (isset($_SERVER[&#039;BASE&#039;])?$_SERVER[&#039;BASE&#039;]:$_SERVER[&#039;REDIRECT_BASE&#039;]) ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using the template &#039;&#039;&#039;html&#039;&#039;&#039; it will be set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarks:&lt;br /&gt;
&lt;br /&gt;
If you are running PHP in CGI mode then apache will prefix your environment variables with &#039;&#039;&#039;REDIRECT_&#039;&#039;&#039;. So we have to check first if the index &#039;&#039;&#039;$_SERVER[&#039;BASE&#039;]&#039;&#039;&#039; ist set. If not we should use the index &#039;&#039;&#039;$_SERVER[&#039;REDIRECT_BASE&#039;]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need the function &#039;&#039;&#039;base_url()&#039;&#039;&#039; of CodeIgniter here a note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=458</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=458"/>
		<updated>2017-11-22T06:47:52Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Backend Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Backend Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://benedmunds.com/ion_auth/ Ion Auth]&lt;br /&gt;
|| [https://github.com/benedmunds/CodeIgniter-Ion-Auth/archive/2.zip Master Bracnch]&lt;br /&gt;
|| [http://benedmunds.com/ion_auth/ Documentation]&lt;br /&gt;
|| [http://benedmunds.com/ion_auth/ Download]&lt;br /&gt;
|| [https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Frontend Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/ Moment.js]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-with-locales.min.js 2.19.2]&lt;br /&gt;
|| [https://momentjs.com/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/timezone/ Moment Timezone]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-timezone-with-data.min.js 0.5.14-2017c]&lt;br /&gt;
|| [https://momentjs.com/timezone/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/timezone/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment-timezone/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://material.io/icons/ Google Material Icons]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/archive/3.0.1.tar.gz 3.0.1]&lt;br /&gt;
|| [http://google.github.io/material-design-icons/ Documentation]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/tree/master/iconfont Download]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/blob/master/LICENSE Apache License 2.0]&lt;br /&gt;
|| Only the icon font.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Special Thanks ==&lt;br /&gt;
&lt;br /&gt;
Special thanks go to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=457</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=457"/>
		<updated>2017-11-15T21:32:01Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Prepared for Frontend Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Backend Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Frontend Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/ Moment.js]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-with-locales.min.js 2.19.2]&lt;br /&gt;
|| [https://momentjs.com/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/timezone/ Moment Timezone]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-timezone-with-data.min.js 0.5.14-2017c]&lt;br /&gt;
|| [https://momentjs.com/timezone/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/timezone/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment-timezone/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://material.io/icons/ Google Material Icons]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/archive/3.0.1.tar.gz 3.0.1]&lt;br /&gt;
|| [http://google.github.io/material-design-icons/ Documentation]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/tree/master/iconfont Download]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/blob/master/LICENSE Apache License 2.0]&lt;br /&gt;
|| Only the icon font.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Special Thanks ==&lt;br /&gt;
&lt;br /&gt;
Special thanks go to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=456</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=456"/>
		<updated>2017-11-15T21:31:36Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Prepared for Frontend Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Backend Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Frontend Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/ Moment.js]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-with-locales.min.js 2.19.2]&lt;br /&gt;
|| [https://momentjs.com/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/timezone/ Moment Timezone]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-timezone-with-data.min.js 0.5.14-2017c]&lt;br /&gt;
|| [https://momentjs.com/timezone/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/timezone/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment-timezone/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://material.io/icons/ Google Material Icons]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/archive/3.0.1.tar.gz 3.0.1]&lt;br /&gt;
|| [http://google.github.io/material-design-icons/ Documentation]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/tree/master/iconfont Download]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/blob/master/LICENSE Apache License 2.0]&lt;br /&gt;
|| Only the icon font.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Special Thanks ==&lt;br /&gt;
&lt;br /&gt;
Special thanks go to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=455</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=455"/>
		<updated>2017-11-15T21:29:49Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Prepared for Frontend Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Backend Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Frontend Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/ Moment.js]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-with-locales.min.js 2.19.2]&lt;br /&gt;
|| [https://momentjs.com/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/timezone/ Moment Timezone]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-timezone-with-data.min.js 0.5.14-2017c]&lt;br /&gt;
|| [https://momentjs.com/timezone/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/timezone/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment-timezone/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://material.io/icons/ Google Material Icons]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/archive/3.0.1.tar.gz 3.0.1]&lt;br /&gt;
|| [http://google.github.io/material-design-icons/ Documentation]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/tree/master/iconfont Download]&lt;br /&gt;
|| [https://github.com/google/material-design-icons/blob/master/LICENSE Apache License 2.0]&lt;br /&gt;
|| Only the icon font.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=454</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=454"/>
		<updated>2017-11-15T19:17:32Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Backend Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Frontend Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/ Moment.js]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-with-locales.min.js 2.19.2]&lt;br /&gt;
|| [https://momentjs.com/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://momentjs.com/timezone/ Moment Timezone]&lt;br /&gt;
|| [https://momentjs.com/downloads/moment-timezone-with-data.min.js 0.5.14-2017c]&lt;br /&gt;
|| [https://momentjs.com/timezone/docs/ Documentation]&lt;br /&gt;
|| [https://momentjs.com/timezone/ Download]&lt;br /&gt;
|| [https://github.com/moment/moment-timezone/blob/develop/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=453</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=453"/>
		<updated>2017-11-15T19:12:19Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prepared for Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=452</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=452"/>
		<updated>2017-11-13T17:28:48Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=451</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=451"/>
		<updated>2017-11-11T20:59:06Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter Translation]&lt;br /&gt;
|| [https://github.com/bcit-ci/codeigniter3-translations/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=450</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=450"/>
		<updated>2017-11-11T14:27:29Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name &amp;amp; Homepage&lt;br /&gt;
|| Version &amp;amp; Download&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
|  [http://codeigniter.com/ CodeIgniter]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.6.tar.gz 3.1.6]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://blog.tedivm.com/category/projects/jshrink/ JShrink]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz 1.2.0]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [http://adaptive-images.com/ Adaptive Images]&lt;br /&gt;
|| [http://adaptive-images.com/content/downloads/adaptive-images.1.5.2.zip 1.5.2]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
|  [http://leafo.github.io/scssphp/ scssphp]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/archive/v0.7.1.tar.gz 0.7.1]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| [http://getbootstrap.com/ Bootstrap]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/releases/download/v4.0.0-beta.2/bootstrap-4.0.0-beta.2-dist.zip 4.0.0-beta.2]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://jquery.com jQuery]&lt;br /&gt;
|| [https://code.jquery.com/jquery-3.2.1.min.js 3.2.1]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
|  [https://www.telerik.com/kendo-ui/open-source-core Kendo UI Core]&lt;br /&gt;
|| 3.2.1&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=449</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=449"/>
		<updated>2017-11-05T19:32:47Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
|| Homepage&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Bootstrap 4.0.0-beta.2&lt;br /&gt;
|| [http://getbootstrap.com/ Homepage]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| jQuery 3.2.1&lt;br /&gt;
|| [https://jquery.com Homepage]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Kendo UI Core 3.2.1&lt;br /&gt;
|| [https://www.telerik.com/kendo-ui/open-source-core Homepage]&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=448</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=448"/>
		<updated>2017-11-05T19:32:22Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is CodeCoupler? ==&lt;br /&gt;
&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
|| Homepage&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Bootstrap 4.0.0-beta.2&lt;br /&gt;
|| [http://getbootstrap.com/ Homepage]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| jQuery 3.2.1&lt;br /&gt;
|| [https://jquery.com Homepage]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Kendo UI Core 3.2.1&lt;br /&gt;
|| [https://www.telerik.com/kendo-ui/open-source-core Homepage]&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=447</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=447"/>
		<updated>2017-11-05T19:30:30Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
|| Homepage&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Bootstrap 4.0.0-beta.2&lt;br /&gt;
|| [http://getbootstrap.com/ Homepage]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| jQuery 3.2.1&lt;br /&gt;
|| [https://jquery.com Homepage]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Kendo UI Core 3.2.1&lt;br /&gt;
|| [https://www.telerik.com/kendo-ui/open-source-core Homepage]&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=446</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=446"/>
		<updated>2017-11-05T19:30:18Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
|| Homepage&lt;br /&gt;
|| Documentation&lt;br /&gt;
|| Download&lt;br /&gt;
|| Licence: MIT&lt;br /&gt;
|| Remarks&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE BSD 3-clause]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|| Library used to write an own class that fits into the CodeIgniter schema.&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Bootstrap 4.0.0-beta.2&lt;br /&gt;
|| [http://getbootstrap.com/ Homepage]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| jQuery 3.2.1&lt;br /&gt;
|| [https://jquery.com Homepage]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ MIT]&lt;br /&gt;
|| -&lt;br /&gt;
|-&lt;br /&gt;
| Kendo UI Core 3.2.1&lt;br /&gt;
|| [https://www.telerik.com/kendo-ui/open-source-core Homepage]&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Apache License, version 2.0]&lt;br /&gt;
|| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=445</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=445"/>
		<updated>2017-11-05T19:26:03Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again. In contrast to other big frameworks this one is based on numerous small libraries specialized in solving a specific topic. This is the best approach in my view and this is the attempt bundling all these specialists out there under one roof.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE Licence: BSD 3-clause]&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Licence: Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| Bootstrap 4.0.0-beta.2&lt;br /&gt;
|| [http://getbootstrap.com/ Homepage]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| jQuery 3.2.1&lt;br /&gt;
|| [https://jquery.com Homepage]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| Kendo UI Core 3.2.1&lt;br /&gt;
|| [https://www.telerik.com/kendo-ui/open-source-core Homepage]&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Licence: Apache License, version 2.0]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=444</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=444"/>
		<updated>2017-11-05T19:03:34Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE Licence: BSD 3-clause]&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Licence: Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| Bootstrap 4.0.0-beta.2&lt;br /&gt;
|| [http://getbootstrap.com/ Homepage]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| jQuery 3.2.1&lt;br /&gt;
|| [https://jquery.com Homepage]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| Kendo UI Core 3.2.1&lt;br /&gt;
|| [https://www.telerik.com/kendo-ui/open-source-core Homepage]&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://www.telerik.com/download/kendo-ui-core Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Licence: Apache License, version 2.0]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=443</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=443"/>
		<updated>2017-11-05T18:59:08Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE Licence: BSD 3-clause]&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Licence: Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| Bootstrap 4.0.0-beta.2&lt;br /&gt;
|| [http://getbootstrap.com/ Homepage]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/introduction/ Documentation]&lt;br /&gt;
|| [http://getbootstrap.com/docs/4.0/getting-started/download/ Download]&lt;br /&gt;
|| [https://github.com/twbs/bootstrap/blob/master/LICENSE Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| jQuery 3.2.1&lt;br /&gt;
|| [https://jquery.com Homepage]&lt;br /&gt;
|| [http://api.jquery.com/ Documentation]&lt;br /&gt;
|| [https://jquery.com/download/ Download]&lt;br /&gt;
|| [https://jquery.org/license/ Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| Kendo UI Core 3.2.1&lt;br /&gt;
|| [https://www.telerik.com/kendo-ui/open-source-core Homepage]&lt;br /&gt;
|| [https://docs.telerik.com/kendo-ui/introduction Documentation]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/releases Download]&lt;br /&gt;
|| [https://github.com/telerik/kendo-ui-core/blob/master/LICENSE.md Licence: Apache License, version 2.0]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=442</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=442"/>
		<updated>2017-11-05T18:02:44Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE Licence: BSD 3-clause]&lt;br /&gt;
|-&lt;br /&gt;
| Adaptive Images 1.5.2&lt;br /&gt;
|| [http://adaptive-images.com/ Homepage]&lt;br /&gt;
|| [http://adaptive-images.com/details.htm Documentation]&lt;br /&gt;
|| [http://adaptive-images.com/download.htm Download]&lt;br /&gt;
|| [https://creativecommons.org/licenses/by/3.0/ Licence: Creative Commons Attribution 3.0 Unported License]&lt;br /&gt;
|-&lt;br /&gt;
| scssphp 0.7.1&lt;br /&gt;
|| [http://leafo.github.io/scssphp/ Homepage]&lt;br /&gt;
|| [http://leafo.github.io/scssphp/docs/ Documentation]&lt;br /&gt;
|| [https://github.com/leafo/scssphp/releases Download]&lt;br /&gt;
|| [https://raw.githubusercontent.com/leafo/scssphp/master/LICENSE.md Licence: MIT]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=441</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=441"/>
		<updated>2017-11-05T17:51:37Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Libraries ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download 3.1.4 zip]&amp;lt;br&amp;gt;[https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.tar.gz Download 3.1.4 tar.gz]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.zip Download 1.2.0 zip]&amp;lt;br&amp;gt;[https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz Download 1.2.0 tar.gz]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE Licence: BSD 3-clause]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=440</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=440"/>
		<updated>2017-11-05T17:51:05Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://codeigniter.com/download Download]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download 3.1.4 zip]&amp;lt;br&amp;gt;[https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.tar.gz Download 3.1.4 tar.gz]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|-&lt;br /&gt;
| JShrink 1.2.0&lt;br /&gt;
|| [http://blog.tedivm.com/category/projects/jshrink/ Homepage]&lt;br /&gt;
|| [https://github.com/tedious/JShrink Documentation]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/releases Download]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/archive/v1.2.0.zip Download 1.2.0 zip]&amp;lt;br&amp;gt;[https://github.com/tedious/JShrink/archive/v1.2.0.tar.gz Download 1.2.0 tar.gz]&lt;br /&gt;
|| [https://github.com/tedious/JShrink/blob/master/LICENSE Licence: BSD 3-clause]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Controllers:_Asset_Management&amp;diff=439</id>
		<title>Controllers: Asset Management</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Controllers:_Asset_Management&amp;diff=439"/>
		<updated>2017-11-05T16:39:39Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* General Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
All the assets of your web-application can be placed inside a folder named &#039;&#039;&#039;assets&#039;&#039;&#039;. You can use any folder hierarchy you want.&lt;br /&gt;
&lt;br /&gt;
Assets will be based on the type compiled or otherwise modified before sending them to the client:&lt;br /&gt;
&lt;br /&gt;
* Images will be downscaled for small displays&lt;br /&gt;
* SCSS will be compiled to CSS&lt;br /&gt;
* JavaScript will be compressed&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caching of compiled files:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The compiled version will be cached and as long as the original file will not be modified, these compiled versions will be delivered.&lt;br /&gt;
&lt;br /&gt;
In the most cases you do not have to delete the compiled assets. The controller will recognize a new version of the origin asset, and will delete the cached one by itself. But removing all the contents inside of the folders holding a compiled version can be done everytime safely. This caches will be rebuild automatically.&lt;br /&gt;
&lt;br /&gt;
It could be useful to delete the entire cache from time to time (e.g. after heavy reconstructions of your assets), because there is no garbage collection. The system will not recognize deletion of original files and the compiled version will stay.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Support of Browser Caching:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Browsers caching techniques are also supported and files will not be delivered at all if they are cached by the browser. &lt;br /&gt;
&lt;br /&gt;
Clients will be informed about the last modification date and the Etag hash-value of the requested file. As long as the browser hold a up-to-date version of the asset, the asset will not be streamed again. Instead the library will send a 304 response, which means that the browser should use the it&#039;s cached version.&lt;br /&gt;
&lt;br /&gt;
The handling of Etag has an additional advantage with serving compiled css or javascript files. Unimportant modification in the original file (like insert an empty line) results into the same compiled version and thus into the same Etag. So browsers will be told to use it&#039;s cached version and the asset will not be streamed. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Space Saving Handling:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Furthermore every asset handler can decide if a compilation is necessary. If an asset do not need to be compiled the the original file will be send to the client. These technique will be used for example by the image compiler, to save space for useless duplication of images.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Environment Dependence:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The output of some asset types depends on the environment of your CodeIgniter instance (depending on the constant &amp;quot;ENVIRONMENT&amp;quot;). JavaScript files will be compressed for example if you set your environment to &#039;&#039;&#039;production&#039;&#039;&#039; or &#039;&#039;&#039;testing&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== General Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Links to Assets ===&lt;br /&gt;
&lt;br /&gt;
Assets will be linked from your html source always pointing to the path &#039;&#039;&#039;assets/PATH_TO_ASSET/FILENAME_OF_ASSET&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To link for example to your css assets named &#039;&#039;&#039;style.css&#039;&#039;&#039; that you have saved in the folder &#039;&#039;&#039;application/assets/some_subfolder_if_needed/style.css&#039;&#039;&#039; use the following tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;assets/some_subfolder_if_needed/style.css&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Special Flags ===&lt;br /&gt;
&lt;br /&gt;
Behind the asset name you can add a slash and a flag for special purposes (especially for debugging):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;/off&#039;&#039;&#039; The compiler will not be used. The original asset file will be delivered.&lt;br /&gt;
* &#039;&#039;&#039;/force&#039;&#039;&#039; The asset will be compiled even if the compiled version is up-to-date.&lt;br /&gt;
* &#039;&#039;&#039;/development&#039;&#039;&#039; Deliver always the asset as it would be compiled in a development environment.&lt;br /&gt;
* &#039;&#039;&#039;/testing&#039;&#039;&#039; Deliver always the asset as it would be compiled in a testing environment.&lt;br /&gt;
* &#039;&#039;&#039;/production&#039;&#039;&#039; Deliver always the asset as it would be compiled in a production environment.&lt;br /&gt;
* &#039;&#039;&#039;/force/development&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
* &#039;&#039;&#039;/force/testing&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
* &#039;&#039;&#039;/force/production&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
&lt;br /&gt;
Here an example how to use these flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
Retrieve your stylesheet at the &amp;quot;normal&amp;quot; way:&lt;br /&gt;
http://domain.tld/assets/style.css&lt;br /&gt;
&lt;br /&gt;
Retrieve your stylesheet as it would be in a production environment:&lt;br /&gt;
http://domain.tld/assets/style.css/production&lt;br /&gt;
&lt;br /&gt;
Retrieve your original stylesheet without the use of the compiler:&lt;br /&gt;
http://domain.tld/assets/style.css/off&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asset Types ==&lt;br /&gt;
&lt;br /&gt;
For now the following assets will be processed as follows:&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
&lt;br /&gt;
Imagefiles with the extensions &#039;&#039;&#039;jpg&#039;&#039;&#039;, &#039;&#039;&#039;jpeg&#039;&#039;&#039;, &#039;&#039;&#039;gif&#039;&#039;&#039; and &#039;&#039;&#039;png&#039;&#039;&#039; will be resized accordingly to the users display size. All types of displays should be detected, from high density displays like retina displays down to small mobile devices. For this reason you should use high resolution images (twice as big as displayed) from the beginning. The controller will serve the client an image with an optimized size automatically. The only thing you have to pay attention to, is the correct marking of the used &#039;&#039;&#039;img&#039;&#039;&#039; tags and set a little JavaScript into yout page.&lt;br /&gt;
&lt;br /&gt;
The required JavaScript will be automatically inserted if you use the master template library. If you do not use the master template library you can add it manually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;document.cookie=&#039;resolution=&#039;+Math.max(screen.width,screen.height)+(&amp;quot;devicePixelRatio&amp;quot; in window ? &amp;quot;,&amp;quot;+devicePixelRatio : &amp;quot;,1&amp;quot;)+&#039;; path=/&#039;;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should add this snippet as soon as possible in your &#039;&#039;&#039;head&#039;&#039;&#039;. Here is a best practice example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;...&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;meta http-equiv=&amp;quot;x-ua-compatible&amp;quot; content=&amp;quot;...&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;document.cookie=&#039;resolution=&#039;+Math.max(screen.width,screen.height)+(&amp;quot;devicePixelRatio&amp;quot; in window ? &amp;quot;,&amp;quot;+devicePixelRatio : &amp;quot;,1&amp;quot;)+&#039;; path=/&#039;;&amp;lt;/script&amp;gt;&lt;br /&gt;
    [...]&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;img&#039;&#039;&#039; tag mus have always the correct sizes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img width=&amp;quot;150&amp;quot; height=&amp;quot;50&amp;quot; src=&amp;quot;...&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Acoording to the given design you have to place an image of 150x50 pixels onto the page. In this case you should save a double-sized image into the img folder with 300x100 pixels. The most important thing now, is to write your &#039;&#039;&#039;img&#039;&#039;&#039; tag with the correct sizes: &#039;&#039;&#039;&amp;lt;img width=&amp;quot;150&amp;quot; height=&amp;quot;50&amp;quot; src=&amp;quot;...&amp;quot; /&amp;gt;&#039;&#039;&#039;. That&#039;s all. Everything else will be done by the library. Retina-displays will show a sharp image and mobile browsers will get a downsized image.&lt;br /&gt;
&lt;br /&gt;
Used library: http://adaptive-images.com/&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
Stylesheetfiles with the extensions &#039;&#039;&#039;css&#039;&#039;&#039; or &#039;&#039;&#039;scss&#039;&#039;&#039; will be compiled as SCSS. You can use variables, nesting, mixins, inheritance etc. and the library will produce the CSS for you. If you dont want or need it, just use simple CSS as always.&lt;br /&gt;
&lt;br /&gt;
To learn more about SCSS read the basic introduction here: http://sass-lang.com/guide&lt;br /&gt;
&lt;br /&gt;
Furthermore the stylesheet will be compressed in a testing or production CodeIgniter environment. Otherwise it will be only normalized.&lt;br /&gt;
&lt;br /&gt;
In case of a compiler error a css comment will be inserted at the beginning of your stylesheet and the stylesheet will be delivered uncompiled.&lt;br /&gt;
&lt;br /&gt;
Used library: http://leafo.net/scssphp/&lt;br /&gt;
&lt;br /&gt;
=== JavaScript ===&lt;br /&gt;
&lt;br /&gt;
JavaScript files with the extension &#039;&#039;&#039;js&#039;&#039;&#039; will be automatically minified if you are on production or testing CodeIgniter environment. Otherwise it will be left untouched.&lt;br /&gt;
&lt;br /&gt;
In case of a compiler error a JavaScript comment will be inserted at the beginning of your script and the file will be delivered uncompiled.&lt;br /&gt;
&lt;br /&gt;
Used library: https://github.com/tedious/JShrink&lt;br /&gt;
&lt;br /&gt;
=== Other Binaries ===&lt;br /&gt;
&lt;br /&gt;
For other files for now no special processing will be done. Just put your files inside of the assets folder being prepared for future enhancements.&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Controllers:_Asset_Management&amp;diff=438</id>
		<title>Controllers: Asset Management</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Controllers:_Asset_Management&amp;diff=438"/>
		<updated>2017-11-05T16:38:53Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
All the assets of your web-application can be placed inside a folder named &#039;&#039;&#039;assets&#039;&#039;&#039;. You can use any folder hierarchy you want.&lt;br /&gt;
&lt;br /&gt;
Assets will be based on the type compiled or otherwise modified before sending them to the client:&lt;br /&gt;
&lt;br /&gt;
* Images will be downscaled for small displays&lt;br /&gt;
* SCSS will be compiled to CSS&lt;br /&gt;
* JavaScript will be compressed&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caching of compiled files:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The compiled version will be cached and as long as the original file will not be modified, these compiled versions will be delivered.&lt;br /&gt;
&lt;br /&gt;
In the most cases you do not have to delete the compiled assets. The controller will recognize a new version of the origin asset, and will delete the cached one by itself. But removing all the contents inside of the folders holding a compiled version can be done everytime safely. This caches will be rebuild automatically.&lt;br /&gt;
&lt;br /&gt;
It could be useful to delete the entire cache from time to time (e.g. after heavy reconstructions of your assets), because there is no garbage collection. The system will not recognize deletion of original files and the compiled version will stay.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Support of Browser Caching:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Browsers caching techniques are also supported and files will not be delivered at all if they are cached by the browser. &lt;br /&gt;
&lt;br /&gt;
Clients will be informed about the last modification date and the Etag hash-value of the requested file. As long as the browser hold a up-to-date version of the asset, the asset will not be streamed again. Instead the library will send a 304 response, which means that the browser should use the it&#039;s cached version.&lt;br /&gt;
&lt;br /&gt;
The handling of Etag has an additional advantage with serving compiled css or javascript files. Unimportant modification in the original file (like insert an empty line) results into the same compiled version and thus into the same Etag. So browsers will be told to use it&#039;s cached version and the asset will not be streamed. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Space Saving Handling:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Furthermore every asset handler can decide if a compilation is necessary. If an asset do not need to be compiled the the original file will be send to the client. These technique will be used for example by the image compiler, to save space for useless duplication of images.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Environment Dependence:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The output of some asset types depends on the environment of your CodeIgniter instance (depending on the constant &amp;quot;ENVIRONMENT&amp;quot;). JavaScript files will be compressed for example if you set your environment to &#039;&#039;&#039;production&#039;&#039;&#039; or &#039;&#039;&#039;testing&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== General Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Links to Assets ===&lt;br /&gt;
&lt;br /&gt;
Assets will be linked from your html source always pointing to the path &#039;&#039;&#039;assets/PATH_TO_ASSET/FILENAME_OF_ASSET&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To link for example to your css assets named &#039;&#039;&#039;style.css&#039;&#039;&#039; that you have saved in the folder &#039;&#039;&#039;application/assets/some_subfolder_if_needed/style.css&#039;&#039;&#039; use the following tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;assets/some_subfolder_if_needed/style.css&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Special Flags ===&lt;br /&gt;
&lt;br /&gt;
Behind the asset name you can add a slash and a flag for special purposes (especially for debugging):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;/off&#039;&#039;&#039; The compiler will not be used. The original asset file will be delivered.&lt;br /&gt;
* &#039;&#039;&#039;/force&#039;&#039;&#039; The asset will be compiled even if the compiled version is up-to-date.&lt;br /&gt;
* &#039;&#039;&#039;/development&#039;&#039;&#039; Deliver always the asset as it would be compiled in a development environment.&lt;br /&gt;
* &#039;&#039;&#039;/testing&#039;&#039;&#039; Deliver always the asset as it would be compiled in a testing environment.&lt;br /&gt;
* &#039;&#039;&#039;/production&#039;&#039;&#039; Deliver always the asset as it would be compiled in a production environment.&lt;br /&gt;
* &#039;&#039;&#039;/force/development&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
* &#039;&#039;&#039;/force/testing&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
* &#039;&#039;&#039;/force/production&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
&lt;br /&gt;
Here an example how to use these flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
Retrieve your stylesheet at the &amp;quot;normal&amp;quot; way:&lt;br /&gt;
http://domain.tld/assets/style.css&lt;br /&gt;
&lt;br /&gt;
Retrieve your stylesheet as it would be in a production environment:&lt;br /&gt;
http://domain.tld/assets/style.css/production&lt;br /&gt;
&lt;br /&gt;
Retrieve your original stylesheet without the use of the compiler:&lt;br /&gt;
http://domain.tld/assets/style.css/off&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asset Types ==&lt;br /&gt;
&lt;br /&gt;
For now the following assets will be processed as follows:&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
&lt;br /&gt;
Imagefiles with the extensions &#039;&#039;&#039;jpg&#039;&#039;&#039;, &#039;&#039;&#039;jpeg&#039;&#039;&#039;, &#039;&#039;&#039;gif&#039;&#039;&#039; and &#039;&#039;&#039;png&#039;&#039;&#039; will be resized accordingly to the users display size. All types of displays should be detected, from high density displays like retina displays down to small mobile devices. For this reason you should use high resolution images (twice as big as displayed) from the beginning. The controller will serve the client an image with an optimized size automatically. The only thing you have to pay attention to, is the correct marking of the used &#039;&#039;&#039;img&#039;&#039;&#039; tags and set a little JavaScript into yout page.&lt;br /&gt;
&lt;br /&gt;
The required JavaScript will be automatically inserted if you use the master template library. If you do not use the master template library you can add it manually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;document.cookie=&#039;resolution=&#039;+Math.max(screen.width,screen.height)+(&amp;quot;devicePixelRatio&amp;quot; in window ? &amp;quot;,&amp;quot;+devicePixelRatio : &amp;quot;,1&amp;quot;)+&#039;; path=/&#039;;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should add this snippet as soon as possible in your &#039;&#039;&#039;head&#039;&#039;&#039;. Here is a best practice example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;...&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;meta http-equiv=&amp;quot;x-ua-compatible&amp;quot; content=&amp;quot;...&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;document.cookie=&#039;resolution=&#039;+Math.max(screen.width,screen.height)+(&amp;quot;devicePixelRatio&amp;quot; in window ? &amp;quot;,&amp;quot;+devicePixelRatio : &amp;quot;,1&amp;quot;)+&#039;; path=/&#039;;&amp;lt;/script&amp;gt;&lt;br /&gt;
    [...]&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;img&#039;&#039;&#039; tag mus have always the correct sizes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img width=&amp;quot;150&amp;quot; height=&amp;quot;50&amp;quot; src=&amp;quot;...&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Acoording to the given design you have to place an image of 150x50 pixels onto the page. In this case you should save a double-sized image into the img folder with 300x100 pixels. The most important thing now, is to write your &#039;&#039;&#039;img&#039;&#039;&#039; tag with the correct sizes: &#039;&#039;&#039;&amp;lt;img width=&amp;quot;150&amp;quot; height=&amp;quot;50&amp;quot; src=&amp;quot;...&amp;quot; /&amp;gt;&#039;&#039;&#039;. That&#039;s all. Everything else will be done by the library. Retina-displays will show a sharp image and mobile browsers will get a downsized image.&lt;br /&gt;
&lt;br /&gt;
Used library: http://adaptive-images.com/&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
Stylesheetfiles with the extensions &#039;&#039;&#039;css&#039;&#039;&#039; or &#039;&#039;&#039;scss&#039;&#039;&#039; will be compiled as SCSS. You can use variables, nesting, mixins, inheritance etc. and the library will produce the CSS for you. If you dont want or need it, just use simple CSS as always.&lt;br /&gt;
&lt;br /&gt;
To learn more about SCSS read the basic introduction here: http://sass-lang.com/guide&lt;br /&gt;
&lt;br /&gt;
Furthermore the stylesheet will be compressed in a testing or production CodeIgniter environment. Otherwise it will be only normalized.&lt;br /&gt;
&lt;br /&gt;
In case of a compiler error a css comment will be inserted at the beginning of your stylesheet and the stylesheet will be delivered uncompiled.&lt;br /&gt;
&lt;br /&gt;
Used library: http://leafo.net/scssphp/&lt;br /&gt;
&lt;br /&gt;
=== JavaScript ===&lt;br /&gt;
&lt;br /&gt;
JavaScript files with the extension &#039;&#039;&#039;js&#039;&#039;&#039; will be automatically minified if you are on production or testing CodeIgniter environment. Otherwise it will be left untouched.&lt;br /&gt;
&lt;br /&gt;
In case of a compiler error a JavaScript comment will be inserted at the beginning of your script and the file will be delivered uncompiled.&lt;br /&gt;
&lt;br /&gt;
Used library: https://github.com/tedious/JShrink&lt;br /&gt;
&lt;br /&gt;
=== Other Binaries ===&lt;br /&gt;
&lt;br /&gt;
For other files for now no special processing will be done. Just put your files inside of the assets folder being prepared for future enhancements.&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Controllers:_Asset_Management&amp;diff=437</id>
		<title>Controllers: Asset Management</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Controllers:_Asset_Management&amp;diff=437"/>
		<updated>2017-11-05T15:51:38Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All the assets of your web-application can be placed inside a folder named &#039;&#039;&#039;assets&#039;&#039;&#039;. You can use any folder hierarchy you want. Assets will be based on the type compiled or otherwise modified before sending them to the client.&lt;br /&gt;
&lt;br /&gt;
Here all the features of the asset management library:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Caching of compiled files:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The compiled version will be cached and as long as the original file will not be modified, these compiled versions will be delivered.&lt;br /&gt;
&lt;br /&gt;
In the most cases you do not have to delete the compiled assets. The controller will recognize a new version of the origin asset, and will delete the cached one by itself. But removing all the contents inside of the folders holding a compiled version can be done everytime safely. This caches will be rebuild automatically.&lt;br /&gt;
&lt;br /&gt;
It could be useful to delete the entire cache from time to time (e.g. after heavy reconstructions of your assets), because there is no garbage collection. The system will not recognize deletion of original files and the compiled version will stay.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Support of Browser Caching:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Browsers caching techniques are also supported and files will not be delivered at all if they are cached by the browser. &lt;br /&gt;
&lt;br /&gt;
Clients will be informed about the last modification date and the Etag hash-value of the requested file. As long as the browser hold a up-to-date version of the asset, the asset will not be streamed again. Instead the library will send a 304 response, which means that the browser should use the it&#039;s cached version.&lt;br /&gt;
&lt;br /&gt;
The handling of Etag has an additional advantage with serving compiled css or javascript files. Unimportant modification in the original file (like insert an empty line) results into the same compiled version and thus into the same Etag. So browsers will be told to use it&#039;s cached version and the asset will not be streamed. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Space Saving Handling:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Furthermore every asset handler can decide if a compilation is necessary. If an asset do not need to be compiled the the original file will be send to the client. These technique will be used for example by the image compiler, to save space for useless duplication of images.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Environment Dependence:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The output of some asset types depends on the environment of your CodeIgniter instance. JavaScript files will be compressed for example if you set your environment to &#039;&#039;&#039;production&#039;&#039;&#039; or &#039;&#039;&#039;testing&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== General Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Links to Assets ===&lt;br /&gt;
&lt;br /&gt;
Assets will be linked from your html source always pointing to the path &#039;&#039;&#039;assets/PATH_TO_ASSET/FILENAME_OF_ASSET&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To link for example to your css assets named &#039;&#039;&#039;style.css&#039;&#039;&#039; that you have saved in the folder &#039;&#039;&#039;application/assets/some_subfolder_if_needed/style.css&#039;&#039;&#039; use the following tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;assets/some_subfolder_if_needed/style.css&amp;quot; type=&amp;quot;text/css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Special Flags ===&lt;br /&gt;
&lt;br /&gt;
Behind the asset name you can add a slash and a flag for special purposes (especially for debugging):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;/off&#039;&#039;&#039; The compiler will not be used. The original asset file will be delivered.&lt;br /&gt;
* &#039;&#039;&#039;/force&#039;&#039;&#039; The asset will be compiled even if the compiled version is up-to-date.&lt;br /&gt;
* &#039;&#039;&#039;/development&#039;&#039;&#039; Deliver always the asset as it would be compiled in a development environment.&lt;br /&gt;
* &#039;&#039;&#039;/testing&#039;&#039;&#039; Deliver always the asset as it would be compiled in a testing environment.&lt;br /&gt;
* &#039;&#039;&#039;/production&#039;&#039;&#039; Deliver always the asset as it would be compiled in a production environment.&lt;br /&gt;
* &#039;&#039;&#039;/force/development&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
* &#039;&#039;&#039;/force/testing&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
* &#039;&#039;&#039;/force/production&#039;&#039;&#039; Combination of the above options.&lt;br /&gt;
&lt;br /&gt;
Here an example how to use these flags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
Retrieve your stylesheet at the &amp;quot;normal&amp;quot; way:&lt;br /&gt;
http://domain.tld/assets/style.css&lt;br /&gt;
&lt;br /&gt;
Retrieve your stylesheet as it would be in a production environment:&lt;br /&gt;
http://domain.tld/assets/style.css/production&lt;br /&gt;
&lt;br /&gt;
Retrieve your original stylesheet without the use of the compiler:&lt;br /&gt;
http://domain.tld/assets/style.css/off&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asset Types ==&lt;br /&gt;
&lt;br /&gt;
For now the following assets will be processed as follows:&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
&lt;br /&gt;
Imagefiles with the extensions &#039;&#039;&#039;jpg&#039;&#039;&#039;, &#039;&#039;&#039;jpeg&#039;&#039;&#039;, &#039;&#039;&#039;gif&#039;&#039;&#039; and &#039;&#039;&#039;png&#039;&#039;&#039;  will be resized accordingly to the users display size. All types of displays should be detected, from high density displays like retina displays down to small mobile devices. For this reason you should use high resolution images from the beginning. The controller will serve the client an image with an optimized size automatically. The only thing you have to pay attention to, is the correct marking of the used &amp;lt;img&amp;gt;-Tags and set a little JavaScript into yout page.&lt;br /&gt;
&lt;br /&gt;
The JavaScript-Snippet will be automatically inserted if you use the master template library. If you do not use the master template library you can add it manually:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;document.cookie=&#039;resolution=&#039;+Math.max(screen.width,screen.height)+(&amp;quot;devicePixelRatio&amp;quot; in window ? &amp;quot;,&amp;quot;+devicePixelRatio : &amp;quot;,1&amp;quot;)+&#039;; path=/&#039;;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should add this snippet as soon as possible in your &#039;&#039;&#039;head&#039;&#039;&#039;. Here is a best practice example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;...&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;meta http-equiv=&amp;quot;x-ua-compatible&amp;quot; content=&amp;quot;...&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;document.cookie=&#039;resolution=&#039;+Math.max(screen.width,screen.height)+(&amp;quot;devicePixelRatio&amp;quot; in window ? &amp;quot;,&amp;quot;+devicePixelRatio : &amp;quot;,1&amp;quot;)+&#039;; path=/&#039;;&amp;lt;/script&amp;gt;&lt;br /&gt;
    [...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example: Acoording to the given design you have to place an image of 150x50 pixels onto the page. In this case you will save a double-sized image into the img folder with 300x100 pixels. The most important thing now, is to write your &amp;lt;img&amp;gt;-Tag with the correct sizes: &amp;lt;img width=&amp;quot;150&amp;quot; height=&amp;quot;50&amp;quot; src=&amp;quot;...&amp;quot; /&amp;gt;. That&#039;s all. Everything else will be done by the img-controller. Retina-displays will show a sharp image and mobile browsers will get a downsized image.&lt;br /&gt;
&lt;br /&gt;
Used library: http://adaptive-images.com/&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
Sometimes everyone miss features that don&#039;t exist in CSS yet like variables, nesting, mixins, inheritance. This is now possible by using SCSS. To learn more about this CSS-Extension read the basic introduction here: http://sass-lang.com/guide But you do not have to use SCSS. If you dont want or need it, just use simple CSS as always.&lt;br /&gt;
&lt;br /&gt;
The stylesheet will be compressed in a testing or production environment (depending on the constant &amp;quot;ENVIRONMENT&amp;quot;). Otherwise it will be only normalized. In case of a compiler error a css comment will be inserted at the beginning of your stylesheet and the stylesheet will be delivered uncompiled.&lt;br /&gt;
&lt;br /&gt;
Only SCSS is supported, not SASS!&lt;br /&gt;
&lt;br /&gt;
Used library: http://leafo.net/scssphp/&lt;br /&gt;
&lt;br /&gt;
=== JavaScript ===&lt;br /&gt;
&lt;br /&gt;
You Javascript files will be automatically minified if you are on production or testing environment (depending on the constant &amp;quot;ENVIRONMENT&amp;quot;), so that it can be delivered to the client quicker. Otherwise it will be left untouched. In case of a compiler error a JavaScript comment will be inserted at the beginning of your script and the file will be delivered uncompiled.&lt;br /&gt;
&lt;br /&gt;
Used library: https://github.com/tedious/JShrink&lt;br /&gt;
&lt;br /&gt;
=== Other Binaries ===&lt;br /&gt;
&lt;br /&gt;
For other files (for example pdf-files for download) the folder &amp;quot;etc&amp;quot; was scheduled. For now no special processing will be done for these files. Just put your files inside of the folder &amp;quot;assets/etc&amp;quot; being prepared for future enhancements.&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=436</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=436"/>
		<updated>2017-11-05T13:38:59Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Some Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links to ressources your application without to know about your current place:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But this not very handy as you have always remember to modify your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039; and your &#039;&#039;&#039;RewriteBase&#039;&#039;&#039;. Furthermore these functions produce absolute URLs, which is not necessary.&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in a server variable and redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Now you can set the base in your html page and use only relative URLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are sing the Master Template Library it will be set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need the function &#039;&#039;&#039;base_url()&#039;&#039;&#039; of CodeIgniter here a note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=435</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=435"/>
		<updated>2017-11-05T13:38:39Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links to ressources your application without to know about your current place:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But this not very handy as you have always remember to modify your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039; and your &#039;&#039;&#039;RewriteBase&#039;&#039;&#039;. Furthermore these functions produce absolute URLs, which is not necessary.&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in a server variable and redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Now you can set the base in your html page and use only relative URLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are sing the Master Template Library it will be set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need the funtion &#039;&#039;&#039;base_url()&#039;&#039;&#039; of CodeIgniter here a note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=434</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=434"/>
		<updated>2017-11-05T13:38:15Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Some Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links to ressources your application without to know about your current place:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But this not very handy as you have always remember to modify your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039; and your &#039;&#039;&#039;RewriteBase&#039;&#039;&#039;. Furthermore these functions produce absolute URLs, which is not necessary.&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in a server variable and redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Now you can set the base in your html page and use only relative URLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are sing the Master Template Library it will be set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
If you nevertheless should really need the funtion &#039;&#039;&#039;base_url()&#039;&#039;&#039; of CodeIgniter here a note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler adopted the solution published by Jon Lin in a Stack Overflow Answer from here: http://stackoverflow.com/a/21027742&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=433</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=433"/>
		<updated>2017-11-05T13:34:23Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links to ressources your application without to know about your current place:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But this not very handy as you have always remember to modify your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039; and your &#039;&#039;&#039;RewriteBase&#039;&#039;&#039;. Furthermore these functions produce absolute URLs, which is not necessary.&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URLs?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in a server variable and redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Now you can set the base in your html page and use only relative URLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are sing the Master Template Library it will be set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
A note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039; of CodeIgniter: This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler adopted the solution published by Jon Lin in a Stack Overflow Answer from here: http://stackoverflow.com/a/21027742&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=432</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=432"/>
		<updated>2017-11-05T13:33:16Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039; or &#039;&#039;&#039;site_url()&#039;&#039;&#039; which should helps you to built links to ressources your application without to know about your current place:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But this not very handy as you have always remember to modify your configuration value in &#039;&#039;&#039;$config[&#039;base_url&#039;]&#039;&#039;&#039; and your &#039;&#039;&#039;RewriteBase&#039;&#039;&#039;. Furthermore these functions produce absolute URLs, which is not necessary.&lt;br /&gt;
&lt;br /&gt;
So why not using only relative URL&#039;s?&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects and save the current base folder in a server variable and redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Now you can set the base in your html page and use only relative URLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are sing the Master Template Library it will be set in every page automatically.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
A note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039; of CodeIgniter: This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler adopted the solution published by Jon Lin in a Stack Overflow Answer from here: http://stackoverflow.com/a/21027742&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Catchable_CodeIgniter_Errors&amp;diff=431</id>
		<title>Mods: Catchable CodeIgniter Errors</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Catchable_CodeIgniter_Errors&amp;diff=431"/>
		<updated>2017-11-05T00:01:44Z</updated>

		<summary type="html">&lt;p&gt;Tm: Die Seite wurde neu angelegt: „Most of the functions in CodeIgniter stop the execution in case of an error by calling the method &amp;#039;&amp;#039;&amp;#039;show_error&amp;#039;&amp;#039;&amp;#039;. In some cases it is useful to catch such an…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Most of the functions in CodeIgniter stop the execution in case of an error by calling the method &#039;&#039;&#039;show_error&#039;&#039;&#039;. In some cases it is useful to catch such an error and handle it different. With CodeCoupler you can catch this errors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
    show_error(&amp;quot;This is a Standard CodeIgniter Error&amp;quot;);&lt;br /&gt;
    //Or call any other function of the CodeIgniter Framework that could end with an error&lt;br /&gt;
}&lt;br /&gt;
catch(Exception $exception)&lt;br /&gt;
{&lt;br /&gt;
    die(&amp;quot;The Standard CodeIgniter Error can now be catched&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=430</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=430"/>
		<updated>2017-11-04T23:57:37Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications &amp;amp; Enhancements of the CodeIgniter Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
* [[Mods: Catchable CodeIgniter Errors]]&lt;br /&gt;
* [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=429</id>
		<title>Using the Framework: Basics</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=429"/>
		<updated>2017-11-04T21:10:14Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* MVC Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MVC Approach ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler use CodeIgniter as base. CodeIgniter is a web application framework using the Model-View-Controller approach, which allows separation between logic and presentation. Here a little &amp;quot;Hello World&amp;quot; example:&lt;br /&gt;
&lt;br /&gt;
To create a webpage you need at least a controller and a view. Create at first a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/controllers&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Test extends CI_Controller {&lt;br /&gt;
	public function index()&lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;load-&amp;gt;view(&#039;test&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then create a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/views/&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now open the url &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;yourdomain&amp;gt;/test&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;. You will see your first webpage created with this framework. If you look into the sourcecode you will see a complete html-structure.&lt;br /&gt;
&lt;br /&gt;
For further assistance on how the underlying framework CodeIgniter works, read the very clear and thorough documentation here: http://ellislab.com/codeigniter/user_guide&lt;br /&gt;
&lt;br /&gt;
== Master Template with Components Concept ==&lt;br /&gt;
&lt;br /&gt;
One of the relevant differendes between CodeCoupler and CodeIgniter is that every output of a controller will be surrounded by a master template. The basic layout of the master template looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE ... /&amp;gt;&lt;br /&gt;
&amp;lt;html ... &amp;gt;&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;charset ... /&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt; ... &amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;lt;body&amp;gt;&lt;br /&gt;
		[YOUR CONTROLLER OUTPUT]&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the master template do much more:&lt;br /&gt;
&lt;br /&gt;
* Enabling JavaScript and CSS libraries using a component concept.&lt;br /&gt;
* Autoloading scripts and styles&lt;br /&gt;
* Injecting snippets from everywhere in your code into every place in the template.&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the master-template library here: [[Libraries: Master]]&lt;br /&gt;
&lt;br /&gt;
== Everything is Relative ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeCoupler you do not have to alter everytime configurations when migrating your application into another place. And all the links you have to use are clean and readable.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For further informations how this was realized: [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
== Asset Management ==&lt;br /&gt;
&lt;br /&gt;
You can place assets like images, stylesheets or javascripts into a subfolder &#039;&#039;&#039;assets&#039;&#039;&#039; within your application or into the folder &#039;&#039;&#039;assets&#039;&#039;&#039; at the top of your web folder. If you have multiple application folders, the assets at the top of your web folder will be available to all your applications. Every application can override assets from the top of your web folder by creating an asset with the same name.&lt;br /&gt;
&lt;br /&gt;
You have to store your different asset types in subfolders of the folder &#039;&#039;&#039;assets&#039;&#039;&#039;. Every asset type will be processed differently:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;css&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your css files. You can optionally use SCSS Syntax and they will be automatically compressed in a production environment. More info about SCSS: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#css_extensions&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;img&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your gif, png or jpg-images. Images will be automaticaly downsized for small devices, like mobile-phones. Retina displays will be detected and the bigger image will be used if there is one, thus they show a sharp image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;js&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your javascript files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;etc&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here everything else, like pdf or flash files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
Read more about the built-in Asset Managemenet here: [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Extended Form Handling ==&lt;br /&gt;
&lt;br /&gt;
The whole usage of form-elements is packaged in a new form-class which encloses the existing form-validation-class and form-helper of CodeIgniter. The goal was to avoid some always recurring coding. Here some examples of what that means:&lt;br /&gt;
&lt;br /&gt;
* To insert a text-field, it is not enough to write “form_input($data)”. You have to remember the validation of the field, set the value to the previous posted, set the correct class if an error occurred and so on.&lt;br /&gt;
* A radio-button group or a group of checkboxes you have to think much more about the whole roundtrip and validation.&lt;br /&gt;
* If you want to add more than one form onto one page, you have to think about the separation of the submitted data and assign to the correct form processing code.&lt;br /&gt;
&lt;br /&gt;
Using the form-class you will not need doing all this. Here is a simple example of a view including a form. You do not have to do anything more in the controller than loading this view. A validation of the form will be done for you automatically based on configuration file for this form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;?=form_start(&#039;example_form&#039;)?&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;name&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;name&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;amount&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;amount&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_submit()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_end()?&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;?=form_errors()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_confirmation()?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the form-handling library here: [[Libraries: Form]]&lt;br /&gt;
&lt;br /&gt;
== Multilanguage Routing ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;br /&gt;
&lt;br /&gt;
== Default Enabled Components ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=428</id>
		<title>Using the Framework: Basics</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=428"/>
		<updated>2017-11-04T21:09:38Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* MVC Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MVC Approach ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler use CodeIgniter as base. CodeIgniter is a web application framework using the Model-View-Controller approach, which allows separation between logic and presentation. Here a little &amp;quot;Hello World&amp;quot; example:&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;write&amp;quot; a page you need at least a controller and a view. Create at first a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/controllers&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Test extends CI_Controller {&lt;br /&gt;
	public function index()&lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;load-&amp;gt;view(&#039;test&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then create a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/views/&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now open the url &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;yourdomain&amp;gt;/test&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;. You will see your first webpage created with this framework. If you look into the sourcecode you will see a complete html-structure.&lt;br /&gt;
&lt;br /&gt;
For further assistance on how the underlying framework CodeIgniter works, read the very clear and thorough documentation here: http://ellislab.com/codeigniter/user_guide&lt;br /&gt;
&lt;br /&gt;
== Master Template with Components Concept ==&lt;br /&gt;
&lt;br /&gt;
One of the relevant differendes between CodeCoupler and CodeIgniter is that every output of a controller will be surrounded by a master template. The basic layout of the master template looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE ... /&amp;gt;&lt;br /&gt;
&amp;lt;html ... &amp;gt;&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;charset ... /&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt; ... &amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;lt;body&amp;gt;&lt;br /&gt;
		[YOUR CONTROLLER OUTPUT]&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the master template do much more:&lt;br /&gt;
&lt;br /&gt;
* Enabling JavaScript and CSS libraries using a component concept.&lt;br /&gt;
* Autoloading scripts and styles&lt;br /&gt;
* Injecting snippets from everywhere in your code into every place in the template.&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the master-template library here: [[Libraries: Master]]&lt;br /&gt;
&lt;br /&gt;
== Everything is Relative ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeCoupler you do not have to alter everytime configurations when migrating your application into another place. And all the links you have to use are clean and readable.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For further informations how this was realized: [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
== Asset Management ==&lt;br /&gt;
&lt;br /&gt;
You can place assets like images, stylesheets or javascripts into a subfolder &#039;&#039;&#039;assets&#039;&#039;&#039; within your application or into the folder &#039;&#039;&#039;assets&#039;&#039;&#039; at the top of your web folder. If you have multiple application folders, the assets at the top of your web folder will be available to all your applications. Every application can override assets from the top of your web folder by creating an asset with the same name.&lt;br /&gt;
&lt;br /&gt;
You have to store your different asset types in subfolders of the folder &#039;&#039;&#039;assets&#039;&#039;&#039;. Every asset type will be processed differently:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;css&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your css files. You can optionally use SCSS Syntax and they will be automatically compressed in a production environment. More info about SCSS: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#css_extensions&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;img&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your gif, png or jpg-images. Images will be automaticaly downsized for small devices, like mobile-phones. Retina displays will be detected and the bigger image will be used if there is one, thus they show a sharp image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;js&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your javascript files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;etc&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here everything else, like pdf or flash files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
Read more about the built-in Asset Managemenet here: [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Extended Form Handling ==&lt;br /&gt;
&lt;br /&gt;
The whole usage of form-elements is packaged in a new form-class which encloses the existing form-validation-class and form-helper of CodeIgniter. The goal was to avoid some always recurring coding. Here some examples of what that means:&lt;br /&gt;
&lt;br /&gt;
* To insert a text-field, it is not enough to write “form_input($data)”. You have to remember the validation of the field, set the value to the previous posted, set the correct class if an error occurred and so on.&lt;br /&gt;
* A radio-button group or a group of checkboxes you have to think much more about the whole roundtrip and validation.&lt;br /&gt;
* If you want to add more than one form onto one page, you have to think about the separation of the submitted data and assign to the correct form processing code.&lt;br /&gt;
&lt;br /&gt;
Using the form-class you will not need doing all this. Here is a simple example of a view including a form. You do not have to do anything more in the controller than loading this view. A validation of the form will be done for you automatically based on configuration file for this form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;?=form_start(&#039;example_form&#039;)?&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;name&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;name&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;amount&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;amount&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_submit()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_end()?&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;?=form_errors()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_confirmation()?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the form-handling library here: [[Libraries: Form]]&lt;br /&gt;
&lt;br /&gt;
== Multilanguage Routing ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;br /&gt;
&lt;br /&gt;
== Default Enabled Components ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=427</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=427"/>
		<updated>2017-11-04T21:08:37Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.6&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications and Enhancements of the underlying Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
** [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=426</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=426"/>
		<updated>2017-10-31T22:01:14Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a best-of-breed compilation of web development libraries, put them together in a small footprint framework. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again and never have to learn requirements of a big framework. Using this framework should speed up developing web applications.&lt;br /&gt;
&lt;br /&gt;
== Used Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.4&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications and Enhancements of the underlying Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
** [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=425</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=425"/>
		<updated>2017-05-09T09:46:00Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* How this works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have a function &#039;&#039;&#039;base_url()&#039;&#039;&#039; which helps you to built links to ressources your application without to know about your current place. But this not very handy as you have not forget to use this function and the code looks very ugly.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects the current base url automatically and save it in a server variable. Then CodeCoupler takes this base url and use it in every page in the base-tag automatically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition to this the htaccess file redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039; and variable &#039;&#039;&#039;index_page&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039; was cleared.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
A note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039; of CodeIgniter: This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler adopted the solution published by Jon Lin in a Stack Overflow Answer from here: http://stackoverflow.com/a/21027742&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: &#039;&#039;&#039;request-dir/request-file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=424</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=424"/>
		<updated>2017-05-09T09:45:27Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* How this works */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have a function &#039;&#039;&#039;base_url()&#039;&#039;&#039; which helps you to built links to ressources your application without to know about your current place. But this not very handy as you have not forget to use this function and the code looks very ugly.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects the current base url automatically and save it in a server variable. Then CodeCoupler takes this base url and use it in every page in the base-tag automatically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition to this the htaccess file redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039; and variable &#039;&#039;&#039;index_page&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039; was cleared.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
A note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039; of CodeIgniter: This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler adopted the solution published by Jon Lin in a Stack Overflow Answer from here: http://stackoverflow.com/a/21027742&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: request-dir/request-file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://host/subdir/request-dir/request-file?var=val&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* The variable URI have the value because of the rule above: request-dir/request-file&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=423</id>
		<title>Mods: Automatic Base Detection</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Mods:_Automatic_Base_Detection&amp;diff=423"/>
		<updated>2017-05-09T09:44:40Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeIgniter for example you have a function &#039;&#039;&#039;base_url()&#039;&#039;&#039; which helps you to built links to ressources your application without to know about your current place. But this not very handy as you have not forget to use this function and the code looks very ugly.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;&amp;lt;?php echo base_url();?&amp;gt;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CodeCoupler includes a htaccess file that detects the current base url automatically and save it in a server variable. Then CodeCoupler takes this base url and use it in every page in the base-tag automatically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;base href=&amp;quot;&amp;lt;?=$_SERVER[&#039;BASE&#039;]?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition to this the htaccess file redirects everything into the &#039;&#039;&#039;index.php&#039;&#039;&#039; and variable &#039;&#039;&#039;index_page&#039;&#039;&#039; in &#039;&#039;&#039;config.php&#039;&#039;&#039; was cleared.&lt;br /&gt;
&lt;br /&gt;
From now you do not have to bother how to point to ressources anymore or use the &#039;&#039;&#039;index.php&#039;&#039;&#039;. Just start everytime with the name of controller:&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some Notes ==&lt;br /&gt;
&lt;br /&gt;
A note to the &#039;&#039;&#039;base_url&#039;&#039;&#039; variable in &#039;&#039;&#039;config.php&#039;&#039;&#039; of CodeIgniter: This variable should always be empty to let CodeIgniter automatically detect the protocol the hostname and the subdirectory in functions like &#039;&#039;&#039;base_url()&#039;&#039;&#039;. In some cases you have to set this variable and then you have another place to remind if you move your application around. With CodeCoupler you can set this variable in a way that moving the application at least to another folder do not break your links:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$config[&#039;base_url&#039;] = &#039;http://YOUR_FIXED_DOMAIN/&#039;.(is_cli()?&#039;&#039;:ltrim($_SERVER[&#039;BASE&#039;],&#039;/&#039;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Thanks ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler adopted the solution published by Jon Lin in a Stack Overflow Answer from here: http://stackoverflow.com/a/21027742&lt;br /&gt;
&lt;br /&gt;
== How this works ==&lt;br /&gt;
&lt;br /&gt;
Every line of the htaccess file explained:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:URI} ^$&lt;br /&gt;
RewriteRule ^(.*)$ - [ENV=URI:$1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable URI is empty. If yes, the second line stores the path from the location of the htaccess file to the requested file into the variable &#039;&#039;&#039;URI&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Example Request: http://host/subdir/request-dir/request-file?var=val&lt;br /&gt;
* If this htaccess is placed in &#039;&#039;&#039;subdir&#039;&#039;&#039; the stored value will be: request-dir/request-file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{ENV:BASE} ^$&lt;br /&gt;
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$&lt;br /&gt;
RewriteRule ^ - [ENV=BASE:%2]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first line looks if the variable BASE is empty. The condition of the second line is always true. The only point of this line is saving the some values in two groups. It works as follows:&lt;br /&gt;
&lt;br /&gt;
Remember:&lt;br /&gt;
* Our example Request: http://host/subdir/request-dir/request-file?var=val&lt;br /&gt;
* The variable URI have the value because of the rule above: request-dir/request-file&lt;br /&gt;
&lt;br /&gt;
Now the condition is:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Test-String: request-dir/request-file::/subdir/request-dir/request-file&lt;br /&gt;
Condition  : (        group 1       )::(group2)request-dir/request-file&lt;br /&gt;
                                               ^- This is the        -^&lt;br /&gt;
                                               ^- Backreference \1   -^&lt;br /&gt;
                                               ^- to the value of    -^&lt;br /&gt;
                                               ^- &amp;quot;group 1&amp;quot;          -^&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we have in &#039;&#039;&#039;group 2&#039;&#039;&#039; the base that we need. The third line save this value into the variable BASE. And we are ready for our final rewrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^index\.php&lt;br /&gt;
RewriteRule ^(.*)$ %{ENV:BASE}index.php [L,QSA]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to exclude some requests redirecting to &#039;&#039;&#039;index.php&#039;&#039;&#039; you can add them in the rewrite condition like here:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond $1 !^(index\.php|assets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=422</id>
		<title>Using the Framework: Basics</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=422"/>
		<updated>2017-05-09T09:42:05Z</updated>

		<summary type="html">&lt;p&gt;Tm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MVC Approach ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler use CodeIgniter as base. CodeIgniter is a web application framework using the Model-View-Controller approach, which allows separation between logic and presentation. Here a little &amp;quot;Hello World&amp;quot; example:&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;write&amp;quot; a page you need at least a controller and a view. Create at first a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/controllers/&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Test extends CI_Controller {&lt;br /&gt;
	public function index()&lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;load-&amp;gt;view(&#039;test&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then create a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/views/&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now open the url &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;lt;yourdomain&amp;gt;/test&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;. You will see your first webpage created with this framework. If you look into the sourcecode you will see a complete html-structure.&lt;br /&gt;
&lt;br /&gt;
For further assistance on how the underlying framework CodeIgniter works, read the very clear and thorough documentation here: http://ellislab.com/codeigniter/user_guide&lt;br /&gt;
&lt;br /&gt;
== Master Template with Components Concept ==&lt;br /&gt;
&lt;br /&gt;
One of the relevant differendes between CodeCoupler and CodeIgniter is that every output of a controller will be surrounded by a master template. The basic layout of the master template looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE ... /&amp;gt;&lt;br /&gt;
&amp;lt;html ... &amp;gt;&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;charset ... /&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt; ... &amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;lt;body&amp;gt;&lt;br /&gt;
		[YOUR CONTROLLER OUTPUT]&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the master template do much more:&lt;br /&gt;
&lt;br /&gt;
* Enabling JavaScript and CSS libraries using a component concept.&lt;br /&gt;
* Autoloading scripts and styles&lt;br /&gt;
* Injecting snippets from everywhere in your code into every place in the template.&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the master-template library here: [[Libraries: Master]]&lt;br /&gt;
&lt;br /&gt;
== Everything is Relative ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &#039;&#039;&#039;RewriteBase&#039;&#039;&#039; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeCoupler you do not have to alter everytime configurations when migrating your application into another place. And all the links you have to use are clean and readable.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For further informations how this was realized: [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
== Asset Management ==&lt;br /&gt;
&lt;br /&gt;
You can place assets like images, stylesheets or javascripts into a subfolder &#039;&#039;&#039;assets&#039;&#039;&#039; within your application or into the folder &#039;&#039;&#039;assets&#039;&#039;&#039; at the top of your web folder. If you have multiple application folders, the assets at the top of your web folder will be available to all your applications. Every application can override assets from the top of your web folder by creating an asset with the same name.&lt;br /&gt;
&lt;br /&gt;
You have to store your different asset types in subfolders of the folder &#039;&#039;&#039;assets&#039;&#039;&#039;. Every asset type will be processed differently:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;css&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your css files. You can optionally use SCSS Syntax and they will be automatically compressed in a production environment. More info about SCSS: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#css_extensions&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;img&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your gif, png or jpg-images. Images will be automaticaly downsized for small devices, like mobile-phones. Retina displays will be detected and the bigger image will be used if there is one, thus they show a sharp image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;js&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your javascript files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;etc&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here everything else, like pdf or flash files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
Read more about the built-in Asset Managemenet here: [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Extended Form Handling ==&lt;br /&gt;
&lt;br /&gt;
The whole usage of form-elements is packaged in a new form-class which encloses the existing form-validation-class and form-helper of CodeIgniter. The goal was to avoid some always recurring coding. Here some examples of what that means:&lt;br /&gt;
&lt;br /&gt;
* To insert a text-field, it is not enough to write “form_input($data)”. You have to remember the validation of the field, set the value to the previous posted, set the correct class if an error occurred and so on.&lt;br /&gt;
* A radio-button group or a group of checkboxes you have to think much more about the whole roundtrip and validation.&lt;br /&gt;
* If you want to add more than one form onto one page, you have to think about the separation of the submitted data and assign to the correct form processing code.&lt;br /&gt;
&lt;br /&gt;
Using the form-class you will not need doing all this. Here is a simple example of a view including a form. You do not have to do anything more in the controller than loading this view. A validation of the form will be done for you automatically based on configuration file for this form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;?=form_start(&#039;example_form&#039;)?&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;name&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;name&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;amount&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;amount&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_submit()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_end()?&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;?=form_errors()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_confirmation()?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the form-handling library here: [[Libraries: Form]]&lt;br /&gt;
&lt;br /&gt;
== Multilanguage Routing ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;br /&gt;
&lt;br /&gt;
== Default Enabled Components ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=421</id>
		<title>Using the Framework: Basics</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Using_the_Framework:_Basics&amp;diff=421"/>
		<updated>2017-05-09T09:35:14Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* MVC Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MVC Approach ==&lt;br /&gt;
&lt;br /&gt;
CodeCoupler use CodeIgniter as base. CodeIgniter is a web application framework using the Model-View-Controller approach, which allows separation between logic and presentation. Here a little &amp;quot;Hello World&amp;quot; example:&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;write&amp;quot; a page you need at least a controller and a view. Create at first a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/controllers/&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Test extends CI_Controller {&lt;br /&gt;
	public function index()&lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;load-&amp;gt;view(&#039;test&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then create a file named &#039;&#039;&#039;test.php&#039;&#039;&#039; in the folder &#039;&#039;&#039;application/views/&#039;&#039;&#039; with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now open the url &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;yourdomain&amp;gt;/test&amp;quot;&amp;lt;/nowiki&amp;gt;. You will see your first webpage created with this framework. If you look into the sourcecode you will see one of the relevant differendes between CodeCoupler and CodeIgniter: You do not have to write a complete html-structure, CodeCoupler will do it for you.&lt;br /&gt;
&lt;br /&gt;
For further assistance on how the underlying framework CodeIgniter works, read the very clear and thorough documentation here: http://ellislab.com/codeigniter/user_guide&lt;br /&gt;
&lt;br /&gt;
== Everything is Relative ==&lt;br /&gt;
&lt;br /&gt;
In the most applications that are using redirections and rewrites you have to modify at least the &amp;quot;RewriteBase&amp;quot; if you move them from one subfolder into another. Some frameworks make our life unnecessarily difficult changing the domain name and some other need extra code to generate relative Url&#039;s.&lt;br /&gt;
&lt;br /&gt;
With CodeCoupler you do not have to alter everytime configurations when migrating your application into another place. And all the links you have to use are clean and readable.&lt;br /&gt;
&lt;br /&gt;
Example for HTML:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;controller/method/parameter&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example for JSON-Objects:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;js&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   url: &amp;quot;controller/method/parameter&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For further informations how this was realized: [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
== Master Template with Components Concept ==&lt;br /&gt;
&lt;br /&gt;
In contrast to the basic CodeIgniter framework, every output of a controller will be surrounded by a master-template. The basic layout of the master template looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE ... /&amp;gt;&lt;br /&gt;
&amp;lt;html ... &amp;gt;&lt;br /&gt;
	&amp;lt;head&amp;gt;&lt;br /&gt;
		&amp;lt;charset ... /&amp;gt;&lt;br /&gt;
		&amp;lt;title&amp;gt; ... &amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;/head&amp;gt;&lt;br /&gt;
	&amp;lt;body&amp;gt;&lt;br /&gt;
		[YOUR CONTROLLER OUTPUT]&lt;br /&gt;
	&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But the Master Template do much more:&lt;br /&gt;
&lt;br /&gt;
* Enabling JavaScript and CSS libraries using a component concept.&lt;br /&gt;
* Autoloading scripts and styles&lt;br /&gt;
* Injecting snippets from everywhere in your code into every place in the template.&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the master-template library here: [[Libraries: Master]]&lt;br /&gt;
&lt;br /&gt;
== Asset Management ==&lt;br /&gt;
&lt;br /&gt;
You can place assets like images, stylesheets or javascripts into a subfolder &#039;&#039;&#039;assets&#039;&#039;&#039; within your application or into the folder &#039;&#039;&#039;assets&#039;&#039;&#039; at the top of your web folder. If you have multiple application folders, the assets at the top of your web folder will be available to all your applications. Every application can override assets from the top of your web folder by creating an asset with the same name.&lt;br /&gt;
&lt;br /&gt;
You have to store your different asset types in subfolders of the folder &#039;&#039;&#039;assets&#039;&#039;&#039;. Every asset type will be processed differently:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;css&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your css files. You can optionally use SCSS Syntax and they will be automatically compressed in a production environment. More info about SCSS: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#css_extensions&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;img&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your gif, png or jpg-images. Images will be automaticaly downsized for small devices, like mobile-phones. Retina displays will be detected and the bigger image will be used if there is one, thus they show a sharp image.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;js&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here your javascript files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;etc&#039;&#039;&#039;&amp;lt;br&amp;gt;Put here everything else, like pdf or flash files. For now no special processing be done.&lt;br /&gt;
&lt;br /&gt;
Read more about the built-in Asset Managemenet here: [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Extended Form Handling ==&lt;br /&gt;
&lt;br /&gt;
The whole usage of form-elements is packaged in a new form-class which encloses the existing form-validation-class and form-helper of CodeIgniter. The goal was to avoid some always recurring coding. Here some examples of what that means:&lt;br /&gt;
&lt;br /&gt;
* To insert a text-field, it is not enough to write “form_input($data)”. You have to remember the validation of the field, set the value to the previous posted, set the correct class if an error occurred and so on.&lt;br /&gt;
* A radio-button group or a group of checkboxes you have to think much more about the whole roundtrip and validation.&lt;br /&gt;
* If you want to add more than one form onto one page, you have to think about the separation of the submitted data and assign to the correct form processing code.&lt;br /&gt;
&lt;br /&gt;
Using the form-class you will not need doing all this. Here is a simple example of a view including a form. You do not have to do anything more in the controller than loading this view. A validation of the form will be done for you automatically based on configuration file for this form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;?=form_start(&#039;example_form&#039;)?&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;name&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;name&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_label(&#039;amount&#039;)?&amp;gt;:&amp;lt;br /&amp;gt;&amp;lt;?=form_field(&#039;amount&#039;)?&amp;gt; &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;br /&amp;gt;&lt;br /&gt;
	&amp;lt;?=form_submit()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_end()?&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;?=form_errors()?&amp;gt;&lt;br /&gt;
&amp;lt;?=form_confirmation()?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read the full documentation of the form-handling library here: [[Libraries: Form]]&lt;br /&gt;
&lt;br /&gt;
== Multilanguage Routing ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;br /&gt;
&lt;br /&gt;
== Default Enabled Components ==&lt;br /&gt;
&lt;br /&gt;
- tbd -&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=420</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=420"/>
		<updated>2017-05-09T09:32:19Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a Best-Of-Breed-Compilation and Best-Practice Webdevelopment-Framework. Using this Framework should speed up developing web applications. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.4&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications and Enhancements of the underlying Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
** [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ===&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=419</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=419"/>
		<updated>2017-05-09T09:32:08Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a Best-Of-Breed-Compilation and Best-Practice Webdevelopment-Framework. Using this Framework should speed up developing web applications. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.4&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
=== Modifications and Enhancements of the underlying Framework ===&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
** [[Mods: Automatic Base Detection]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Libraries ====&lt;br /&gt;
&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
&lt;br /&gt;
=== CodeCoupler Controllers ===&lt;br /&gt;
&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
	<entry>
		<id>https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=418</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://archive.codecoupler.org/index.php?title=Hauptseite&amp;diff=418"/>
		<updated>2017-05-09T09:30:53Z</updated>

		<summary type="html">&lt;p&gt;Tm: /* Used Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Quote|If I have seen further it is by standing on the shoulders of giants.|Isaac Newton following Bernard of Chartres&amp;lt;br&amp;gt;http://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants}}&lt;br /&gt;
&lt;br /&gt;
CodeCoupler is a Best-Of-Breed-Compilation and Best-Practice Webdevelopment-Framework. Using this Framework should speed up developing web applications. The goal was to enclose the most used code and libraries in a easy-to-use framework, hoping never have to write the basics of a web application again.&lt;br /&gt;
&lt;br /&gt;
== Used Components ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| CodeIgniter 3.1.4&lt;br /&gt;
|| [http://codeigniter.com/ Homepage]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/ Documentation]&lt;br /&gt;
|| [https://github.com/bcit-ci/CodeIgniter/archive/3.1.4.zip Download]&lt;br /&gt;
|| [https://www.codeigniter.com/user_guide/license.html Licence: MIT]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Thanks to the following Stack Overflow Authors:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Used in !! Link to Code !! Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Mods: Automatic Base Detection]] || [http://stackoverflow.com/a/21027742 Used Code] || [http://stackoverflow.com/users/851273/jon-lin Jon Lin]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Using the Framework ==&lt;br /&gt;
&lt;br /&gt;
* [[Using the Framework: Basics]]&lt;br /&gt;
* [[Using the Framework: Get Started]]&lt;br /&gt;
* [[Using the Framework: JavaScript Controlls]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Tips and Tricks ==&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks: CodeIgniter]]&lt;br /&gt;
* [[Tips and Tricks: Bootstrap]]&lt;br /&gt;
* [[Tips and Tricks: carouFredSel]]&lt;br /&gt;
* [[Tips and Tricks: Elementary CSS Hacks]]&lt;br /&gt;
* [[Tips and Tricks: Legacy Browser Support]]&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
* [[Mods: Summary]]&lt;br /&gt;
** [[Mods: Automatic Base Detection]]&lt;br /&gt;
* [[Libraries: Master]]&lt;br /&gt;
** [[Libraries: Master: Components Overview]]&lt;br /&gt;
** [[Libraries: Master: Adding New Components]]&lt;br /&gt;
* [[Controllers: Asset Management]]&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
&lt;br /&gt;
* [[Extending the Framework]] &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Not Ready&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tm</name></author>
	</entry>
</feed>